IyEvYmluL3NoCiMKIyBpbnRlcm5ldC5zaCx2IDEwLjA4LjA1IDIwMTAtMDgtMDUgMTU6MDA6MDAKIwojIHVzYWdlOiBpbnRlcm5ldC5zaAojCnBhdGhfc2g9YG52IGdldCBwYXRoX3NoYAouICRwYXRoX3NoL2dsb2JhbC5zaAplY2hvICJJbmZvOiBpbnRlcm5ldC5zaCBzdGFydCIgPiAkdGVzdF9sb2cKZWNobyAiSW5mbzogYGRhdGUgKyVtLSVkICVIOiVNOiVTYCIgPj4gJHRlc3RfbG9nCgpnZW5TeXNGaWxlcygpCnsKCWxvZ2luPWBudiBnZXQgTG9naW5gCglwYXNzPWBudiBnZXQgUGFzc3dvcmRgCgllY2hvICIkbG9naW46OjA6MDpBZG1pbnN0cmF0b3I6LzovYmluL3NoIiA+IC9ldGMvcGFzc3dkCgllY2hvICIkbG9naW46eDowOiRsb2dpbiIgPiAvZXRjL2dyb3VwCgllY2hvICIkbG9naW46JHBhc3MiID4gL3RtcC90bXBjaHB3CgljaHBhc3N3ZCA8IC90bXAvdG1wY2hwdwoJcm0gLWYgL3RtcC90bXBjaHB3Cn0KdXNlcl9sb2dpbj1gY2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCBhZG1pbmAKI3VzZXJfbG9naW6yu7Tm1Nq78s6qv9XKsbry1rTQ0Lqvyv1nZW5TeXNGaWxlcwpbIC1uICIkdXNlcl9sb2dpbiIgXSB8fCB7IGdlblN5c0ZpbGVzO30KCnNhZmVfcnVuKCkKewogICAgcHNfdG1wPWBudiBnZXQgcGF0aF9sb2dgInBzLnRtcCIKICAgIHBzID4gJHtwc190bXB9CglmbGFnPWBncmVwIC13ICIkMSIgJHtwc190bXB9YAoJaWYgWyAiLSR7ZmxhZ30iID0gIi0iIF07dGhlbgoJCSQxICYKCWZpCglybSAtcmYgJHtwc190bXB9Cn0KCiO2r8ysbnbWw7/VCiMuICRwYXRoX3NoL2NmZ252X2luaXQuc2gKcHN3YW49YG52IGdldCBwc3dhbmAKZXRod2FuPWBudiBnZXQgZXRod2FuYAp3aWZpd2FuPWBudiBnZXQgd2lmaXdhbmAKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvJHBzd2FuIjEiL2FjY2VwdF9yYQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi8kcHN3YW4iMiIvYWNjZXB0X3JhCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mLyRwc3dhbiIzIi9hY2NlcHRfcmEKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvJHBzd2FuIjQiL2FjY2VwdF9yYQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi8kcHN3YW4iNSIvYWNjZXB0X3JhCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mLyRwc3dhbiI2Ii9hY2NlcHRfcmEKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvJHBzd2FuIjciL2FjY2VwdF9yYQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi8kcHN3YW4iOCIvYWNjZXB0X3JhCmlmIFsgIi0kZXRod2FuIiAhPSAiLSIgXTsgdGhlbgogICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvJGV0aHdhbi9hY2NlcHRfcmEKZmkKaWYgWyAiLSR3aWZpd2FuIiAhPSAiLSIgXTsgdGhlbgogICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvJHdpZml3YW4vYWNjZXB0X3JhCmZpCgojsLLIq9Kqx/MKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvYWxsL3NlbmRfcmVkaXJlY3RzCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9jb25mL2RlZmF1bHQvc2VuZF9yZWRpcmVjdHMKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvYWxsL2FjY2VwdF9yZWRpcmVjdHMKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvZGVmYXVsdC9hY2NlcHRfcmVkaXJlY3RzCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mL2FsbC9hY2NlcHRfcmVkaXJlY3RzCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mL2RlZmF1bHQvYWNjZXB0X3JlZGlyZWN0cwplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvY29uZi9hbGwvc2VjdXJlX3JlZGlyZWN0cwplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvY29uZi9kZWZhdWx0L3NlY3VyZV9yZWRpcmVjdHMKCiNFQyDJ6NbDway907j619nX7rTz1rUst8W1vXJjwO/D5sXk1sMKI2VjaG8gMjAwMCA+IC9wcm9jL3N5cy9uZXQvbmZfY29ubnRyYWNrX21heAplY2hvIDcyMDAgPiAvcHJvYy9zeXMvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGNwX3RpbWVvdXRfZXN0YWJsaXNoZWQKCiN6dGVfbWFpbmN0cmwgJgoKI72rYnJfbmFtZSx1c2JsYW5fbmFtZbSruPjE2rrLyrXP1sa9zKi7rwpmYXN0X3VzYj1gbnYgZ2V0IGZhc3RfdXNiYApsYW5fZW5hYmxlPWBudiBnZXQgTGFuRW5hYmxlYAoKI0xhbkVuYWJsZc6qMsqxuvLDu9PQYnKjrLK70OjSqtC0YnJfbmFtZQppZiBbICIkbGFuX2VuYWJsZSIgIT0gIjIiIF07IHRoZW4KICAgIGVjaG8gJGxhbl9pZiA+IC9wcm9jL25ldC9icl9uYW1lCmZpCgplY2hvICRmYXN0X3VzYiA+IC9wcm9jL25ldC91c2JfbmFtZQoKZWNobyAiIiA+IC9ldGMvcmVzb2x2LmNvbmYKCiNicjC07r2oo6y8sMTazfhkaGNwCnNoICRwYXRoX3NoL2xhbi5zaAoKI72rv+zL2deqt6K8trHwtKu4+MTaussKZmFzdG5hdF9sZXZlbD1gbnYgZ2V0IGZhc3RuYXRfbGV2ZWxgCmVjaG8gIkluZm86IHNldCBmYXN0bmF0X2xldmVsOiAkZmFzdG5hdF9sZXZlbCIgPj4gJHRlc3RfbG9nCmVjaG8gJGZhc3RuYXRfbGV2ZWwgPiAvcHJvYy9uZXQvZmFzdG5hdF9sZXZlbAoKI72rsrvWp7PWv+zL2deqt6K1xNCt0um2y7/ausW0q7j4xNq6ywpub2Zhc3RfcG9ydD1gbnYgZ2V0IG5vZmFzdF9wb3J0YAplY2hvICJJbmZvOiBzZXQgbm9mYXN0X3BvcnQ6ICRub2Zhc3RfcG9ydCIgPj4gJHRlc3RfbG9nCmVjaG8gJG5vZmFzdF9wb3J0ID4gL3Byb2MvbmV0L25vZmFzdF9wb3J0CgojU0tCIGRlYnVnv6q52Apza2JfZGVidWc9YG52IGdldCBza2JfZGVidWdgCmVjaG8gIkluZm86IHNldCBza2JfZGVidWc6ICRza2JfZGVidWciID4+ICR0ZXN0X2xvZwppZiBbICItJHNrYl9kZWJ1ZyIgIT0gIi0xIiBdOyB0aGVuCiAgICBlY2hvIDAgPiAvcHJvYy9uZXQvc2tiX2RlYnVnX29mZgpmaQoKa2lsbGFsbCAtOSBtaW5pdXBucGQKcm0gLXJmICRwYXRoX2NvbmYvaW5hZHluLnN0YXR1cwoKI7zHwry9+LPMsbu6ztbW0MW6xWtpbGxlZLX0Cm5ldGRvZyAtcyBleGl0c2lnPTEKCiO84L/YxNq6y3NrYs/gudjQxc+itcTX7rTz1rUKI3NhZmVfcnVuIG5ldG1vbml0b3IKCiO84L/YxNq6y7XEbmV0bGlua8rCvP605s7EvP6jrNans9bE2rrL19S2qNLlysK8/qOs0vK74dC0Zmxhc2iw5rG+xKzIz7nYsdUKI3NhZmVfcnVuIGV2ZW50X3Byb2MK