PCFET0NUWVBFIEhUTUw+CjxtZXRhIGNoYXJzZXQ9CklTTy04ODU5LTkKPgo8cD5UZXN0Ogo8cHJlPiZsdDshRE9DVFlQRSBIVE1MPgombHQ7bWV0YSBjaGFyc2V0PQpJU08tODg1OS05Cj48L3ByZT4KPHA+RXhwZWN0ZWQgcmVzdWx0OiA8c3BhbiBpZD0iZXhwZWN0ZWQiPldpbmRvd3MtMTI1NDwvc3Bhbj4KPGRpdj4KIDxzdHlsZSBzY29wZWQ+CiAgLnBhc3MgeyBiYWNrZ3JvdW5kOiBncmVlbjsgY29sb3I6IHdoaXRlOyBwYWRkaW5nOiAwLjVlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KICAuZmFpbCB7IGJhY2tncm91bmQ6IHJlZDsgY29sb3I6IHllbGxvdzsgcGFkZGluZzogMC41ZW07IGZvbnQtd2VpZ2h0OiBib2xkOyB9CiA8L3N0eWxlPgogPHA+RW5jb2RpbmcgdXNlZCBieSBicm93c2VyIGlzOiA8c3BhbiBpZD0iZW5jb2RpbmciPlNjcmlwdCBkaWQgbm90IHJ1bi48L3NwYW4+CiA8cD5SZXN1bHQ6IDxzcGFuIGlkPSJyZXN1bHQiPlNjcmlwdCBkaWQgbm90IHJ1bi48L3NwYW4+CiA8c2NyaXB0PgogICB2YXIgZW5jb2RpbmcgPSAndW5rbm93bic7CiAgIGlmICgn4CcgPT0gJ1x1MDBFMCcpIHsgLy8gMHhFMAogICAgIGlmICgnmScgPT0gJ1x1MjEyMicpIHsgLy8gMHg5OQogICAgICAgaWYgKCf+JyA9PSAnXHUwMEZFJykgLy8gMHhGRQogICAgICAgICBlbmNvZGluZyA9ICdXaW5kb3dzLTEyNTInOwogICAgICAgZWxzZSBpZiAoJ/4nID09ICdcdTAxNUYnKQogICAgICAgICBlbmNvZGluZyA9ICdXaW5kb3dzLTEyNTQnOwogICAgICAgZWxzZSBpZiAoJ/4nID09ICdcdTIwMEYnKQogICAgICAgICBlbmNvZGluZyA9ICdXaW5kb3dzLTEyNTYnOwogICAgICAgZWxzZSBpZiAoJ/4nID09ICdcdTIwQUInKQogICAgICAgICBlbmNvZGluZyA9ICdXaW5kb3dzLTEyNTgnOwogICAgICAgZWxzZQogICAgICAgICBlbmNvZGluZyA9ICd1bmtub3duIHdpdGggMHhFMCA9IFUrMDBFMCBhbmQgMHg5OSA9IFUrMjEyMic7CiAgICAgfSBlbHNlIGlmICgn/ycgPT0gJ1x1MDJEOScpIC8vIDB4RkYKICAgICAgIGVuY29kaW5nID0gJ0lTTy04ODU5LTMnOwogICAgIGVsc2UgaWYgKCf+JyA9PSAnXHUwMTc3JykgLy8gMHhGRQogICAgICAgZW5jb2RpbmcgPSAnSVNPLTg4NTktMTQnOwogICAgIGVsc2UgaWYgKCf+JyA9PSAnXHUwMjFCJykKICAgICAgIGVuY29kaW5nID0gJ0lTTy04ODU5LTE2JzsKICAgICBlbHNlIGlmICgn/icgPT0gJ1x1MDE1RicpCiAgICAgICBlbmNvZGluZyA9ICdJU08tODg1OS05JzsKICAgICBlbHNlIGlmICgnvicgPT0gJ1x1MDBCRScpIC8vIDB4QkUKICAgICAgIGVuY29kaW5nID0gJ0lTTy04ODU5LTEnOwogICAgIGVsc2UgaWYgKCe+JyA9PSAnXHUwMTc4JykKICAgICAgIGVuY29kaW5nID0gJ0lTTy04ODU5LTE1JzsKICAgICBlbHNlCiAgICAgICBlbmNvZGluZyA9ICd1bmtub3duIHdpdGggMHhFMCA9IFUrMDBFMCc7CiAgIH0gZWxzZSBpZiAoJ+AnID09ICdcdTAxMDEnKSAvLyAweEUwCiAgICAgZW5jb2RpbmcgPSAnSVNPLTg4NTktMTAnOwogICBlbHNlIGlmICgn4CcgPT0gJ1x1MEU0MCcpIC8vIDB4RTAKICAgICBlbmNvZGluZyA9ICdJU08tODg1OS0xMSc7CiAgIGVsc2UgaWYgKCfgJyA9PSAnXHVGRkZEJykgeyAvLyAweEUwCiAgICAgaWYgKCfimLonID09ICdcdTI2M0EnKSAvLyAweEUyIDB4OTggMHhCQQogICAgICAgZW5jb2RpbmcgPSAnVVRGLTgnOwogICAgIGVsc2UKICAgICAgIGVuY29kaW5nID0gJ3Vua25vd24gKGJ1dCBBU0NJSS1jb21wYXRpYmxlKSc7CiAgIH0KICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VuY29kaW5nJykuZmlyc3RDaGlsZC5kYXRhID0gZW5jb2Rpbmc7CiAgIHZhciBleHBlY3RlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3RlZCcpLmZpcnN0Q2hpbGQuZGF0YTsKICAgaWYgKGV4cGVjdGVkID09ICcoZGVtbyAtIG5vIGV4cGVjdGVkIHJlc3VsdCknKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmZpcnN0Q2hpbGQuZGF0YSA9ICdkZW1vJzsKICAgfSBlbHNlIGlmIChlbmNvZGluZyA9PSBleHBlY3RlZCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5maXJzdENoaWxkLmRhdGEgPSAnUEFTUyc7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmNsYXNzTmFtZSA9ICdwYXNzJzsKICAgfSBlbHNlIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuZmlyc3RDaGlsZC5kYXRhID0gJ0ZBSUwnOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5jbGFzc05hbWUgPSAnZmFpbCc7CiAgIH0KICAgaWYgKHBhcmVudC5yZWNlaXZlZFJlc3VsdHMpCiAgICAgcGFyZW50LnJlY2VpdmVkUmVzdWx0cygpOwogPC9zY3JpcHQ+CjwvZGl2Pgo=