PD9waHAKLyoqCiAqIEJyaWNrcyBDaGlsZCBUaGVtZSDigJQgQlNQIGZ1bmN0aW9ucwogKiBIb3VzZXM6IGVucXVldWUgcGFyZW50ICsgY2hpbGQgc3R5bGVzLCBmb3JjZS1yZW5kZXIgZm9vdGVyICgxMDYpICsgaGVhZGVyICgxMDUpCiAqIHdpdGggQnJpY2tzIENTUyBnZW4gKyBjb21wdXRlZCBvdmVycmlkZXMgKGZpeGVzIEJyaWNrcyAyLjMuMiBBcnJheSBidWcpLgogKi8KCmlmICghZGVmaW5lZCgnQUJTUEFUSCcpKSBleGl0OwoKLyoqIEVucXVldWUgY2hpbGQgc3R5bGVzaGVldCArIGZvcmNlIEJyaWNrcyBmcm9udGVuZCBKUyAoZm9yIG5hdi1uZXN0ZWQgaGFtYnVyZ2VyIGluaXQpLgogKiAgQXByIDE3OiBCcmlja3MgZnJvbnRlbmQgc2NyaXB0IGlzbid0IGF1dG8tZW5xdWV1ZWQgb24gb3VyIGZvcmNlLXJlbmRlcmVkIGhlYWRlcjsKICogIG5hdi1uZXN0ZWQgKyB0b2dnbGUgbmVlZCBicmlja3Mtc2NyaXB0cyB0byBpbml0LiBGb3JjZS1lbnF1ZXVlIGhlcmUuICovCmFkZF9hY3Rpb24oJ3dwX2VucXVldWVfc2NyaXB0cycsIGZ1bmN0aW9uKCkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOwogICAgJGNzc19wYXRoID0gZ2V0X3N0eWxlc2hlZXRfZGlyZWN0b3J5KCkgLiAnL3N0eWxlLmNzcyc7CiAgICAkdmVyID0gZmlsZV9leGlzdHMoJGNzc19wYXRoKSA/IGZpbGVtdGltZSgkY3NzX3BhdGgpIDogJzEuMC4wJzsKICAgIHdwX2VucXVldWVfc3R5bGUoJ2JyaWNrcy1jaGlsZCcsIGdldF9zdHlsZXNoZWV0X3VyaSgpLCBbJ2JyaWNrcy1mcm9udGVuZCddLCAkdmVyKTsKICAgIC8vIEZvcmNlIEJyaWNrcyBmcm9udGVuZCBKUyDigJQgbmVlZGVkIGZvciBOYXYgTmVzdGFibGUgaGFtYnVyZ2VyIHRvZ2dsZSwgQWNjb3JkaW9uLCBldGMuCiAgICBpZiAod3Bfc2NyaXB0X2lzKCdicmlja3Mtc2NyaXB0cycsICdyZWdpc3RlcmVkJykgJiYgIXdwX3NjcmlwdF9pcygnYnJpY2tzLXNjcmlwdHMnLCAnZW5xdWV1ZWQnKSkgewogICAgICAgIHdwX2VucXVldWVfc2NyaXB0KCdicmlja3Mtc2NyaXB0cycpOwogICAgfQp9LCAyMCk7CgovKiogSGVscGVycyDigJQgc2VsZi1jb250YWluZWQgdG8gYXZvaWQgY3Jvc3MtZmlsZSBmdW5jdGlvbi1zY29wZSBpc3N1ZXMgKi8KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2JzcF91dl90b19jc3MnKSkgewogICAgZnVuY3Rpb24gYnNwX3V2X3RvX2NzcygkeCkgewogICAgICAgIGlmIChpc19hcnJheSgkeCkgJiYgaXNzZXQoJHhbJ3VuaXQnXSkgJiYgaXNzZXQoJHhbJ3ZhbHVlJ10pKSB7CiAgICAgICAgICAgIGlmICgkeFsndW5pdCddID09PSAnYXV0bycpIHJldHVybiAnYXV0byc7CiAgICAgICAgICAgIHJldHVybiAkeFsndmFsdWUnXSAuICR4Wyd1bml0J107CiAgICAgICAgfQogICAgICAgIHJldHVybiBpc19zY2FsYXIoJHgpID8gKHN0cmluZykkeCA6ICcnOwogICAgfQogICAgZnVuY3Rpb24gYnNwX2VsZW1lbnRfcnVsZSgkZWwpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRlbCkgfHwgIWlzc2V0KCRlbFsnaWQnXSkpIHJldHVybiAnJzsKICAgICAgICAkaWQgPSAkZWxbJ2lkJ107ICRzID0gJGVsWydzZXR0aW5ncyddID8/IFtdOyAkZGVjbHMgPSBbXTsKICAgICAgICBmb3JlYWNoIChbJ193aWR0aCc9Pid3aWR0aCcsJ19oZWlnaHQnPT4naGVpZ2h0J10gYXMgJGs9PiRwKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkc1ska10pKSB7ICR2ID0gYnNwX3V2X3RvX2Nzcygkc1ska10pOyBpZiAoJHYpICRkZWNsc1tdID0gIiRwOiAkdiI7IH0KICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRzWydfcGFkZGluZyddKSAmJiBpc19hcnJheSgkc1snX3BhZGRpbmcnXSkpIHsKICAgICAgICAgICAgJHAgPSAkc1snX3BhZGRpbmcnXTsgJHNkID0gW107CiAgICAgICAgICAgIGZvcmVhY2ggKFsndG9wJywncmlnaHQnLCdib3R0b20nLCdsZWZ0J10gYXMgJHNpZGUpIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkcFskc2lkZV0gPz8gMDsKICAgICAgICAgICAgICAgICRzZFskc2lkZV0gPSBpc19hcnJheSgkdmFsKSA/IGJzcF91dl90b19jc3MoJHZhbCkgOiAoc3RyaW5nKSR2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRlY2xzW10gPSAicGFkZGluZzogeyRzZFsndG9wJ119IHskc2RbJ3JpZ2h0J119IHskc2RbJ2JvdHRvbSddfSB7JHNkWydsZWZ0J119IjsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRzWydfbWFyZ2luJ10pICYmIGlzX2FycmF5KCRzWydfbWFyZ2luJ10pKSB7CiAgICAgICAgICAgICRtID0gJHNbJ19tYXJnaW4nXTsgJHNkID0gW107CiAgICAgICAgICAgIGZvcmVhY2ggKFsndG9wJywncmlnaHQnLCdib3R0b20nLCdsZWZ0J10gYXMgJHNpZGUpIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkbVskc2lkZV0gPz8gMDsKICAgICAgICAgICAgICAgICRzZFskc2lkZV0gPSBpc19hcnJheSgkdmFsKSA/IGJzcF91dl90b19jc3MoJHZhbCkgOiAoc3RyaW5nKSR2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRlY2xzW10gPSAibWFyZ2luOiB7JHNkWyd0b3AnXX0geyRzZFsncmlnaHQnXX0geyRzZFsnYm90dG9tJ119IHskc2RbJ2xlZnQnXX0iOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19yb3dHYXAnXSkpICAgICRkZWNsc1tdID0gJ3Jvdy1nYXA6ICcgLiBic3BfdXZfdG9fY3NzKCRzWydfcm93R2FwJ10pOwogICAgICAgIGlmIChpc3NldCgkc1snX2NvbHVtbkdhcCddKSkgJGRlY2xzW10gPSAnY29sdW1uLWdhcDogJyAuIGJzcF91dl90b19jc3MoJHNbJ19jb2x1bW5HYXAnXSk7CiAgICAgICAgaWYgKGlzc2V0KCRzWydfZ2FwJ10pKSAgICAgICAkZGVjbHNbXSA9ICdnYXA6ICcgLiBic3BfdXZfdG9fY3NzKCRzWydfZ2FwJ10pOwogICAgICAgIGlmIChpc3NldCgkc1snX2JvcmRlciddWydyYWRpdXMnXSkgJiYgaXNfYXJyYXkoJHNbJ19ib3JkZXInXVsncmFkaXVzJ10pKSB7CiAgICAgICAgICAgICRyID0gJHNbJ19ib3JkZXInXVsncmFkaXVzJ107ICRjID0gW107CiAgICAgICAgICAgIGZvcmVhY2ggKFsndG9wJywncmlnaHQnLCdib3R0b20nLCdsZWZ0J10gYXMgJHNpZGUpIHsKICAgICAgICAgICAgICAgICR2ID0gJHJbJHNpZGVdID8/IDA7CiAgICAgICAgICAgICAgICAkY1skc2lkZV0gPSBpc19hcnJheSgkdikgPyBic3BfdXZfdG9fY3NzKCR2KSA6IChzdHJpbmcpJHY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRlY2xzW10gPSAiYm9yZGVyLXJhZGl1czogeyRjWyd0b3AnXX0geyRjWydyaWdodCddfSB7JGNbJ2JvdHRvbSddfSB7JGNbJ2xlZnQnXX0iOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19iYWNrZ3JvdW5kJ11bJ2NvbG9yJ11bJ2hleCddKSkgJGRlY2xzW10gPSAnYmFja2dyb3VuZC1jb2xvcjogJyAuICRzWydfYmFja2dyb3VuZCddWydjb2xvciddWydoZXgnXTsKICAgICAgICBpZiAoaXNzZXQoJHNbJ19kaXJlY3Rpb24nXSkpIHsgJGRlY2xzW10gPSAnZGlzcGxheTogZmxleCc7ICRkZWNsc1tdID0gJ2ZsZXgtZGlyZWN0aW9uOiAnIC4gJHNbJ19kaXJlY3Rpb24nXTsgfQogICAgICAgIGlmIChpc3NldCgkc1snX2p1c3RpZnlDb250ZW50J10pKSAkZGVjbHNbXSA9ICdqdXN0aWZ5LWNvbnRlbnQ6ICcgLiAkc1snX2p1c3RpZnlDb250ZW50J107CiAgICAgICAgaWYgKGlzc2V0KCRzWydfYWxpZ25JdGVtcyddKSkgICAgICRkZWNsc1tdID0gJ2FsaWduLWl0ZW1zOiAnIC4gJHNbJ19hbGlnbkl0ZW1zJ107CiAgICAgICAgaWYgKGlzc2V0KCRzWydfZmxleFdyYXAnXSkpICAgICAgICRkZWNsc1tdID0gJ2ZsZXgtd3JhcDogJyAuICRzWydfZmxleFdyYXAnXTsKICAgICAgICBpZiAoaXNzZXQoJHNbJ190ZXh0QWxpZ24nXSkpICAgICAgJGRlY2xzW10gPSAndGV4dC1hbGlnbjogJyAuICRzWydfdGV4dEFsaWduJ107CiAgICAgICAgaWYgKGlzc2V0KCRzWydfZGlzcGxheSddKSkgICAgICAgICRkZWNsc1tdID0gJ2Rpc3BsYXk6ICcgLiAkc1snX2Rpc3BsYXknXTsKICAgICAgICBpZiAoaXNzZXQoJHNbJ19vYmplY3RGaXQnXSkpICAgICAgJGRlY2xzW10gPSAnb2JqZWN0LWZpdDogJyAuICRzWydfb2JqZWN0Rml0J107CiAgICAgICAgaWYgKGVtcHR5KCRkZWNscykpIHJldHVybiAnJzsKICAgICAgICByZXR1cm4gJyNicnhlLScgLiAkaWQgLiAnIHsgJyAuIGltcGxvZGUoJzsgJywgJGRlY2xzKSAuICcgfSc7CiAgICB9CiAgICBmdW5jdGlvbiBic3BfcmVuZGVyX2JyaWNrc190ZW1wbGF0ZSgkcGlkLCAkYXJlYV9sYWJlbCkgewogICAgICAgIC8vIEkyIHBhdGNoIDIwMjYtMDUtMDM6IEJyaWNrcyAyLjMuMiBzdG9yZXMgaGVhZGVyIHRlbXBsYXRlcyBhdCBfYnJpY2tzX3BhZ2VfaGVhZGVyXzIKICAgICAgICAvLyAodnMgbGVnYWN5IF9icmlja3NfcGFnZV9jb250ZW50XzIgZm9yIG9sZGVyIHRlbXBsYXRlcyBsaWtlIFBJRCAxMDUpLgogICAgICAgIC8vIFRyeSBhcmVhLXNwZWNpZmljIGtleSBmaXJzdCwgZmFsbCBiYWNrIHRvIGNvbnRlbnRfMiBmb3IgbGVnYWN5IGNvbXBhdGliaWxpdHkuCiAgICAgICAgJGtleSA9ICdfYnJpY2tzX3BhZ2VfJyAuICRhcmVhX2xhYmVsIC4gJ18yJzsKICAgICAgICAkZWxlbWVudHMgPSBnZXRfcG9zdF9tZXRhKCRwaWQsICRrZXksIHRydWUpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGVsZW1lbnRzKSB8fCBlbXB0eSgkZWxlbWVudHMpKSB7CiAgICAgICAgICAgICRlbGVtZW50cyA9IGdldF9wb3N0X21ldGEoJHBpZCwgJ19icmlja3NfcGFnZV9jb250ZW50XzInLCB0cnVlKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc19hcnJheSgkZWxlbWVudHMpIHx8IGVtcHR5KCRlbGVtZW50cykpIHJldHVybjsKICAgICAgICBlY2hvICc8IS0tIEJTUCBjaGlsZC10aGVtZSByZW5kZXIgJyAuICRhcmVhX2xhYmVsIC4gJyAnIC4gJHBpZCAuICcgc3RhcnQgLS0+JzsKCiAgICAgICAgLy8gRm9vdGVyIHdhdmUgdG9wIGVkZ2Ug4oCUIFJFTU9WRUQgMjAyNi0wNS0wOCAodjI3YykgcGVyIFJvYmVydCBkaXJlY3RpdmUuCiAgICAgICAgLy8gICBXYXMgQXVkcmV5IEZpZ21hIG5vZGUgNjUyOjgwMSBpbmxpbmUgU1ZHLCBidXQgQXVkcmV5J3MgbmV3IHRlbXBsYXRlIGlkPTk2MCBmb290ZXIKICAgICAgICAvLyAgIGlzIHN0YW5kYWxvbmUg4oCUIG5vIGV4dHJhIG5hdnkgd2F2ZSBkZWNvcmF0aW9uIGFib3ZlIGl0LiBSb2JlcnQgc2NyZWVuc2hvdCBNYXkgOCBQTS4KICAgICAgICAvLyAgIENpdGU6IMKnODUuSiBWaXN1YWwgQUNLICsgUm9iZXJ0IE1heSA4IEVPRCBzaGlwIGRpcmVjdGl2ZS4KICAgICAgICAkYmVmb3JlX2tleXMgPSBbXTsKICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCdcXEJyaWNrc1xcQXNzZXRzJykpIHsKICAgICAgICAgICAgJHJjID0gbmV3IFxSZWZsZWN0aW9uQ2xhc3MoJ1xcQnJpY2tzXFxBc3NldHMnKTsKICAgICAgICAgICAgaWYgKCRyYy0+aGFzUHJvcGVydHkoJ3VuaXF1ZV9pbmxpbmVfY3NzJykpIHsKICAgICAgICAgICAgICAgICRwcm9wID0gJHJjLT5nZXRQcm9wZXJ0eSgndW5pcXVlX2lubGluZV9jc3MnKTsKICAgICAgICAgICAgICAgICRwcm9wLT5zZXRBY2Nlc3NpYmxlKHRydWUpOwogICAgICAgICAgICAgICAgJGJlZm9yZSA9ICRwcm9wLT5nZXRWYWx1ZSgpOwogICAgICAgICAgICAgICAgJGJlZm9yZV9rZXlzID0gaXNfYXJyYXkoJGJlZm9yZSkgPyBhcnJheV9rZXlzKCRiZWZvcmUpIDogW107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJ1xcQnJpY2tzXFxBc3NldHMnLCdnZW5lcmF0ZV9jc3NfZnJvbV9lbGVtZW50cycpKSB7CiAgICAgICAgICAgIHRyeSB7IFxCcmlja3NcQXNzZXRzOjpnZW5lcmF0ZV9jc3NfZnJvbV9lbGVtZW50cygkZWxlbWVudHMsICRhcmVhX2xhYmVsKTsgfSBjYXRjaChcVGhyb3dhYmxlICRlKSB7fQogICAgICAgIH0KICAgICAgICAkYnJpY2tzX2NzcyA9ICcnOwogICAgICAgIGlmIChjbGFzc19leGlzdHMoJ1xcQnJpY2tzXFxBc3NldHMnKSkgewogICAgICAgICAgICAkcmMgPSBuZXcgXFJlZmxlY3Rpb25DbGFzcygnXFxCcmlja3NcXEFzc2V0cycpOwogICAgICAgICAgICBpZiAoJHJjLT5oYXNQcm9wZXJ0eSgndW5pcXVlX2lubGluZV9jc3MnKSkgewogICAgICAgICAgICAgICAgJHByb3AgPSAkcmMtPmdldFByb3BlcnR5KCd1bmlxdWVfaW5saW5lX2NzcycpOwogICAgICAgICAgICAgICAgJHByb3AtPnNldEFjY2Vzc2libGUodHJ1ZSk7CiAgICAgICAgICAgICAgICAkYWxsID0gJHByb3AtPmdldFZhbHVlKCk7CiAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGFsbCkpIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X2tleXMgPSBhcnJheV9kaWZmKGFycmF5X2tleXMoJGFsbCksICRiZWZvcmVfa2V5cyk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJG5ld19rZXlzIGFzICRrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2ID0gJGFsbFska107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19zdHJpbmcoJHYpKSAkYnJpY2tzX2NzcyAuPSAkdjsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmIChpc19hcnJheSgkdikgJiYgaXNzZXQoJHZbJ2NzcyddKSkgJGJyaWNrc19jc3MgLj0gJHZbJ2NzcyddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkY29tcHV0ZWQgPSAnJzsKICAgICAgICBmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsKSB7ICRyID0gYnNwX2VsZW1lbnRfcnVsZSgkZWwpOyBpZiAoJHIpICRjb21wdXRlZCAuPSAkci4iXG4iOyB9CiAgICAgICAgZWNobyAnPHN0eWxlIGlkPSJic3AtJy4kYXJlYV9sYWJlbC4nLWNzcy0nLiRwaWQuJyI+JzsKICAgICAgICBlY2hvICJcbi8qIEJTUCAkYXJlYV9sYWJlbCBjb21wdXRlZCAoQkFTRSDigJQgQnJpY2tzIEBtZWRpYSBydWxlcyBiZWxvdyBvdmVycmlkZSkgKi9cbiIuJGNvbXB1dGVkOwogICAgICAgIGVjaG8gJGJyaWNrc19jc3M7CiAgICAgICAgZWNobyAnPC9zdHlsZT4nOwogICAgICAgIGlmIChjbGFzc19leGlzdHMoJ1xcQnJpY2tzXFxGcm9udGVuZCcpICYmIG1ldGhvZF9leGlzdHMoJ1xcQnJpY2tzXFxGcm9udGVuZCcsJ3JlbmRlcl9jb250ZW50JykpIHsKICAgICAgICAgICAgXEJyaWNrc1xGcm9udGVuZDo6cmVuZGVyX2NvbnRlbnQoJGVsZW1lbnRzKTsKICAgICAgICB9CiAgICAgICAgZWNobyAnPCEtLSBCU1AgY2hpbGQtdGhlbWUgcmVuZGVyICcgLiAkYXJlYV9sYWJlbCAuICcgJyAuICRwaWQgLiAnIGVuZCAtLT4nOwogICAgfQp9CgoKIC8qKiBXUCBBZG1pbiDihpIgQXBwZWFyYW5jZSDihpIgVGhlbWUgRWRpdG9yIOKGkiAiQnJpY2tzIENoaWxkIiDihpIKICAqIGZ1bmN0aW9ucy5waHAg4oaSIH5saW5lIDE0NTogKi8KCiAgRklORDoKICAgICAgaWYgKCR0cGwgJiYgJHRwbC0+cG9zdF9zdGF0dXMgPT09ICdwdWJsaXNoJykgewogICAgICAgICAgcmV0dXJuOwogICAgICB9CgogIFJFUExBQ0U6CiAgICAgIGlmICgkdHBsICYmICR0cGwtPnBvc3Rfc3RhdHVzID09PSAncHVibGlzaCcgJiYKICAhaXNfZnJvbnRfcGFnZSgpKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgCi8qKiBPbmUtdGltZSBtaWdyYXRpb246IHB1Ymxpc2ggdGVtcGxhdGUgNjE5ICsgZW5zdXJlIGdsb2JhbCBjb25kaXRpb25zICgyMDI2LTA1LTAzKSAqLwphZGRfYWN0aW9uKCdpbml0JywgZnVuY3Rpb24oKSB7CiAgICBpZiAoZ2V0X29wdGlvbignYnNwXzYxOV9wdWJsaXNoX25hdGl2ZV92MScsICcwJykgPT09ICdkb25lJykgcmV0dXJuOwogICAgaWYgKGlzX2FkbWluKCkgJiYgIXdwX2RvaW5nX2FqYXgoKSkgewogICAgICAgIC8vIHJ1biBkdXJpbmcgZnJvbnQtZW5kIGluaXQsIHNraXAgYWRtaW4gY29udGV4dCB0byBhdm9pZCBsb29wcwogICAgICAgIHJldHVybjsKICAgIH0KICAgICRwb3N0ID0gZ2V0X3Bvc3QoNjE5KTsKICAgIGlmICghJHBvc3QpIHsKICAgICAgICB1cGRhdGVfb3B0aW9uKCdic3BfNjE5X3B1Ymxpc2hfbmF0aXZlX3YxJywgJ2RvbmVfbm9fcG9zdCcpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIC8vIFB1Ymxpc2ggaWYgY3VycmVudGx5IGRyYWZ0CiAgICBpZiAoJHBvc3QtPnBvc3Rfc3RhdHVzICE9PSAncHVibGlzaCcpIHsKICAgICAgICB3cF91cGRhdGVfcG9zdChbCiAgICAgICAgICAgICdJRCcgPT4gNjE5LAogICAgICAgICAgICAncG9zdF9zdGF0dXMnID0+ICdwdWJsaXNoJywKICAgICAgICBdKTsKICAgIH0KICAgIC8vIEVuc3VyZSBjb25kaXRpb25zIGNvdmVyIGZyb250LXBhZ2UgKyBwb3N0ICsgcGFnZSAoYXBwbHkgZ2xvYmFsbHkpCiAgICAkY3VycmVudCA9IGdldF9wb3N0X21ldGEoNjE5LCAnX2JyaWNrc190ZW1wbGF0ZV9jb25kaXRpb25zJywgdHJ1ZSk7CiAgICAkbmVlZHNfc2V0ID0gZW1wdHkoJGN1cnJlbnQpIHx8ICFpc19hcnJheSgkY3VycmVudCkgfHwgY291bnQoJGN1cnJlbnQpIDwgMzsKICAgIGlmICgkbmVlZHNfc2V0KSB7CiAgICAgICAgdXBkYXRlX3Bvc3RfbWV0YSg2MTksICdfYnJpY2tzX3RlbXBsYXRlX2NvbmRpdGlvbnMnLCBbCiAgICAgICAgICAgIFsnbWFpbicgPT4gJ2Zyb250LXBhZ2UnXSwKICAgICAgICAgICAgWydtYWluJyA9PiAncG9zdCddLAogICAgICAgICAgICBbJ21haW4nID0+ICdwYWdlJ10sCiAgICAgICAgXSk7CiAgICB9CiAgICB1cGRhdGVfb3B0aW9uKCdic3BfNjE5X3B1Ymxpc2hfbmF0aXZlX3YxJywgJ2RvbmUnKTsKfSwgNSk7CgovKiogRW1pdCBjb21wdXRlZCBDU1MgZm9yIHRoZSBDVVJSRU5UIHBhZ2UgKGZpeGVzIEJyaWNrcyAyLjMuMiBBcnJheSBidWcgb24gbmF0aXZlLXJlbmRlcmVkIHBhZ2VzIGxpa2UgcGFnZSA4KSAqLwphZGRfYWN0aW9uKCd3cF9oZWFkJywgZnVuY3Rpb24oKSB7CiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JyaWNrc19pc19idWlsZGVyX21haW4nKSAmJiBicmlja3NfaXNfYnVpbGRlcl9tYWluKCkpIHJldHVybjsKICAgIGlmICghaXNfc2luZ3VsYXIoKSkgcmV0dXJuOwogICAgZ2xvYmFsICRwb3N0OwogICAgaWYgKCEkcG9zdCB8fCAhaXNzZXQoJHBvc3QtPklEKSkgcmV0dXJuOwogICAgJHBpZCA9IChpbnQpJHBvc3QtPklEOwogICAgJGVsZW1lbnRzID0gZ2V0X3Bvc3RfbWV0YSgkcGlkLCAnX2JyaWNrc19wYWdlX2NvbnRlbnRfMicsIHRydWUpOwogICAgaWYgKCFpc19hcnJheSgkZWxlbWVudHMpIHx8IGVtcHR5KCRlbGVtZW50cykpIHJldHVybjsKICAgICRjc3MgPSAnJzsKICAgIGZvcmVhY2ggKCRlbGVtZW50cyBhcyAkZWwpIHsKICAgICAgICAkciA9IGJzcF9lbGVtZW50X3J1bGUoJGVsKTsKICAgICAgICBpZiAoJHIpICRjc3MgLj0gJHIgLiAiXG4iOwogICAgfQogICAgCiAgICAvLyBBdWRyZXkgZGVjb3JhdGl2ZSB3YXZlIGJhY2tncm91bmRzIOKAlCBvbmx5IG9uIHBhZ2UgOCBzZXdlci1jYW1lcmEtaW5zcGVjdGlvbgogICAgLy8gRmlnbWEgbm9kZXM6IDYxMjoxNSBtaWQgd2F2ZSAoeT0yMjMxKSwgNjUwOjE0NSB0b3Agd2F2ZSAoeT02Nzk2KQogICAgaWYgKCRwaWQgPT09IDgpIHsKICAgICAgICAvLyBXQVZFUyBBUyBTRUNUSU9OIEJBQ0tHUk9VTkRTIOKAlCBubyBhYnNvbHV0ZSBwb3NpdGlvbmluZywgcmVzcG9uc2l2ZSBieSBkZWZhdWx0CiAgICAgICAgLy8gRmlnbWEgc3BlYzogd2F2ZV9iYWNrZ3JvdW5kX2VsZW1lbnRzIGlzICNCRUU2RjUgc29saWQgdmVjdG9yLCAxNDQweDEyNDAsIGluc2lkZSAwNF9Qcm9jZXNzX1N0ZXBzCiAgICAgICAgLy8gUHJvcGVyIENTUzogYmFja2dyb3VuZC1pbWFnZSBvbiB0aGUgc2VjdGlvbiBpdHNlbGYsIGNvdmVycyBuYXR1cmFsbHkgYXQgYWxsIHZpZXdwb3J0cwoKICAgICAgICAvLyBGQVEgQUNDT1JESU9OIOKAlCBjbGljay10by1leHBhbmQgYmVoYXZpb3IgZm9yIEZBUSBjYXJkcwogICAgICAgIGVjaG8gJzxzY3JpcHQgaWQ9ImJzcC1mYXEtYWNjb3JkaW9uLTgiPgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgLy8gVGFyZ2V0IE9OTFkgdGhlIDYgRkFRIGJsb2NrcyBieSB0aGVpciBzcGVjaWZpYyBJRHMgKGZyb20gYnJpY2tzX3BhZ2U4X2lkX21hcC5qc29uKQogIHZhciBmYXFJZHMgPSBbIjJhZTc5NCIsIjE4MWJiYiIsImVkMjdkYyIsIjVlMjc4NSIsImU2MDI1YSIsImE2ODA3MSJdOwogIGZhcUlkcy5mb3JFYWNoKGZ1bmN0aW9uKGJpZCkgewogICAgdmFyIGNhcmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJ4ZS0iICsgYmlkKTsKICAgIGlmICghY2FyZCkgcmV0dXJuOwogICAgdmFyIGg0ID0gY2FyZC5xdWVyeVNlbGVjdG9yKCJoNCwgLmJyeGUtaGVhZGluZyIpOwogICAgdmFyIGFuc3dlciA9IGg0ID8gaDQubmV4dEVsZW1lbnRTaWJsaW5nIDogbnVsbDsKICAgIGlmIChoNCAmJiBhbnN3ZXIpIHsKICAgICAgLy8gSW5pdGlhbGx5IGhpZGUgYW5zd2VycwogICAgICBhbnN3ZXIuc3R5bGUubWF4SGVpZ2h0ID0gIjAiOwogICAgICBhbnN3ZXIuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKICAgICAgYW5zd2VyLnN0eWxlLnRyYW5zaXRpb24gPSAibWF4LWhlaWdodCAwLjM1cyBlYXNlLCBvcGFjaXR5IDAuM3MgZWFzZSI7CiAgICAgIGFuc3dlci5zdHlsZS5vcGFjaXR5ID0gIjAiOwogICAgICAvLyBBZGQgY2hldnJvbgogICAgICBoNC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CiAgICAgIGg0LnN0eWxlLmRpc3BsYXkgPSAiZmxleCI7CiAgICAgIGg0LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gInNwYWNlLWJldHdlZW4iOwogICAgICBoNC5zdHlsZS5hbGlnbkl0ZW1zID0gImNlbnRlciI7CiAgICAgIHZhciBjaGV2cm9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICBjaGV2cm9uLnRleHRDb250ZW50ID0gIisiOwogICAgICBjaGV2cm9uLnN0eWxlLmZvbnRTaXplID0gIjI4cHgiOwogICAgICBjaGV2cm9uLnN0eWxlLmZvbnRXZWlnaHQgPSAiNzAwIjsKICAgICAgY2hldnJvbi5zdHlsZS5jb2xvciA9ICIjMzBDNUZGIjsKICAgICAgY2hldnJvbi5zdHlsZS50cmFuc2l0aW9uID0gInRyYW5zZm9ybSAwLjNzIGVhc2UiOwogICAgICBjaGV2cm9uLnN0eWxlLm1hcmdpbkxlZnQgPSAiMTZweCI7CiAgICAgIGNoZXZyb24uc3R5bGUuZmxleFNocmluayA9ICIwIjsKICAgICAgaDQuYXBwZW5kQ2hpbGQoY2hldnJvbik7CiAgICAgIGg0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGlzT3BlbiA9IGFuc3dlci5zdHlsZS5tYXhIZWlnaHQgIT09ICIwcHgiICYmIGFuc3dlci5zdHlsZS5tYXhIZWlnaHQgIT09ICIwIjsKICAgICAgICBpZiAoaXNPcGVuKSB7CiAgICAgICAgICBhbnN3ZXIuc3R5bGUubWF4SGVpZ2h0ID0gIjAiOwogICAgICAgICAgYW5zd2VyLnN0eWxlLm9wYWNpdHkgPSAiMCI7CiAgICAgICAgICBjaGV2cm9uLnRleHRDb250ZW50ID0gIisiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhbnN3ZXIuc3R5bGUubWF4SGVpZ2h0ID0gYW5zd2VyLnNjcm9sbEhlaWdodCArICJweCI7CiAgICAgICAgICBhbnN3ZXIuc3R5bGUub3BhY2l0eSA9ICIxIjsKICAgICAgICAgIGNoZXZyb24udGV4dENvbnRlbnQgPSAiXHUyMjEyIjsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogIH0pOwp9KTsKPC9zY3JpcHQ+Jy4iXG4iOwogICAgfQp9LCA5OTkpOwoKLyoqCiAqIEhlcm8vTWVudSBvdmVybGFwIGFsaWdubWVudCAoQXByIDE1IGRyaWZ0IGZpeCkKICogRmlnbWEgRGVza3RvcC0xIHNwZWM6IE1lbnUgMTQ0MHgxNjIgYXQgeT0wLCBoZXJvIHRlY2ggaW1hZ2UgMTQ0MHg1MTIgYXQgeT0xMTYuCiAqIFRoaXMgbWVhbnMgdGhlIG1lbnUgb3ZlcmxhcHMgdGhlIHRvcCA0NnB4IG9mIHRoZSBoZXJvIGltYWdlLgogKiBMaXZlIHNpdGUgaGFzIG1lbnUgc3RhY2tpbmcgYWJvdmUgaW1hZ2UgaW4gZmxvdy4gRml4OiBwb3NpdGlvbiBtZW51IGFic29sdXRlCiAqIGF0IHRvcCwgcHVsbCBtYWluIHVwIHVuZGVyIGl0LgogKiBTY29wZWQgdG8gcGFnZS1pZC04IChzZXdlci1jYW1lcmEtaW5zcGVjdGlvbikgdG8gYXZvaWQgYmxlZWQuCiAqLwphZGRfYWN0aW9uKCd3cF9oZWFkJywgZnVuY3Rpb24oKSB7CiAgICBpZiAoIWlzX3BhZ2UoOCkpIHJldHVybjsKfSwgOTk4KTsKCi8qKiBHbG9iYWwgbW9iaWxlIGhhbWJ1cmdlciBtZW51IGZvciBoZWFkZXIgdGVtcGxhdGUgMTA1ICovCmFkZF9hY3Rpb24oJ3dwX2hlYWQnLCBmdW5jdGlvbigpIHsKICAgIGlmIChpc19hZG1pbigpIHx8IHdwX2RvaW5nX2FqYXgoKSB8fCAoZGVmaW5lZCgnUkVTVF9SRVFVRVNUJykgJiYgUkVTVF9SRVFVRVNUKSkgcmV0dXJuOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOwp9LCA1KTsKCmFkZF9hY3Rpb24oJ3dwX2Zvb3RlcicsIGZ1bmN0aW9uKCkgewogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdicmlja3NfaXNfYnVpbGRlcl9tYWluJykgJiYgYnJpY2tzX2lzX2J1aWxkZXJfbWFpbigpKSByZXR1cm47CiAgICBlY2hvICc8c2NyaXB0IGlkPSJic3AtbmF2LW5lc3RlZC1pbml0Ij4nCiAgICAgICAuICdkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7JwogICAgICAgLyogRWFnZXItbG9hZCBpbWFnZXMgKEJyaWNrcyBsYXp5LWxvYWQgZGF0YS1zcmMgaGFuZGxpbmcpICovCiAgICAgICAuICcgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ic3AtZm9yY2UtaGVhZGVyIGltZ1tkYXRhLXNyY10sICNicnhlLWY1YTRhNSBpbWdbZGF0YS1zcmNdLCAjYnJ4ZS04YTk4YTQgaW1nW2RhdGEtc3JjXSwgI2JyeGUtZDRmZTliLCAjYnJ4ZS05YTc3MzAsICNicnhlLTBiYTI5YSwgI2JyeGUtM2RiOTQ2LCAjYnJ4ZS1jY2VkMDEsICNicnhlLTk5YzQ2ZiBpbWcsICNicnhlLTEzN2E5ZCBpbWcsICNicnhlLTlmM2NlNiBpbWcsICNicnhlLWI2NDZlNiBpbWcsICNicnhlLTlhNTBjNCBpbWcsICNicnhlLWJmNTFhOSBpbWcsICNicnhlLTcyNjE3NCIpLmZvckVhY2goZnVuY3Rpb24oaW1nKSB7JwogICAgICAgLiAnICAgIGlmIChpbWcuZGF0YXNldC5zcmMpIHsgaW1nLnNyYyA9IGltZy5kYXRhc2V0LnNyYzsgaW1nLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zcmMiKTsgfScKICAgICAgIC4gJyAgICBpZiAoaW1nLmRhdGFzZXQuc3Jjc2V0KSB7IGltZy5zcmNzZXQgPSBpbWcuZGF0YXNldC5zcmNzZXQ7IGltZy5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtc3Jjc2V0Iik7IH0nCiAgICAgICAuICcgICAgaW1nLmNsYXNzTGlzdC5yZW1vdmUoImJyaWNrcy1sYXp5LWhpZGRlbiIpOycKICAgICAgIC4gJyAgfSk7JwogICAgICAgLyogU3RyaXAgYnJpY2tzLWxhenktaGlkZGVuIGZyb20gZm9yY2UtcmVuZGVyZWQgbmF2IGVsZW1lbnRzICovCiAgICAgICAuICcgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNicnhlLWFhMTAwMSwgI2JyeGUtYWExMDAxICosICNicnhlLWFhMTAwNywgI2JyeGUtYWExMDA4IikuZm9yRWFjaChmdW5jdGlvbihlbCl7IGVsLmNsYXNzTGlzdC5yZW1vdmUoImJyaWNrcy1sYXp5LWhpZGRlbiIpOyB9KTsnCiAgICAgICAvKiBXaXJlIE5hdiBOZXN0YWJsZSB0b2dnbGUgKE9wZW4gKyBDbG9zZSB0d2lucykgKi8KICAgICAgIC4gJyAgdmFyIG5hdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJicnhlLWFhMTAwMSIpOycKICAgICAgIC4gJyAgdmFyIGJ0bk9wZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJ4ZS1hYTEwMDciKTsnCiAgICAgICAuICcgIHZhciBidG5DbG9zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJicnhlLWFhMTAwOCIpOycKICAgICAgIC4gJyAgdmFyIGl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJyeGUtYWExMDAyIik7JwogICAgICAgLiAnICB2YXIgT1ZFUkxBWV9DU1MgPSAiZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50O3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDtyaWdodDowIWltcG9ydGFudDtib3R0b206MCFpbXBvcnRhbnQ7d2lkdGg6MTAwdnchaW1wb3J0YW50O2hlaWdodDoxMDB2aCFpbXBvcnRhbnQ7YmFja2dyb3VuZDojRjhGQUZDIWltcG9ydGFudDt6LWluZGV4OjIxNDc0ODM2NDchaW1wb3J0YW50O3BhZGRpbmc6ODBweCAyNHB4IDMycHggMjRweCFpbXBvcnRhbnQ7Z2FwOjAhaW1wb3J0YW50O29wYWNpdHk6MSFpbXBvcnRhbnQ7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnQ7dHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtvdmVyZmxvdy15OmF1dG8haW1wb3J0YW50OyI7JwogICAgICAgLiAnICB2YXIgQ0xPU0VfQ1NTID0gImRpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50O3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MTZweCFpbXBvcnRhbnQ7cmlnaHQ6MTZweCFpbXBvcnRhbnQ7d2lkdGg6NDhweCFpbXBvcnRhbnQ7aGVpZ2h0OjQ4cHghaW1wb3J0YW50O3otaW5kZXg6MjE0NzQ4MzY0NyFpbXBvcnRhbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2N1cnNvcjpwb2ludGVyIWltcG9ydGFudDtwYWRkaW5nOjhweCFpbXBvcnRhbnQ7IjsnCiAgICAgICAuICcgIHZhciBMSU5LX0NTUyA9ICJkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LWZhbWlseTpJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDtjb2xvcjojMUQxNzYwIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7Zm9udC1zaXplOjIycHghaW1wb3J0YW50O3BhZGRpbmc6MTZweCAyNHB4IWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgyOSwyMyw5NiwwLjA4KSFpbXBvcnRhbnQ7d2lkdGg6YXV0byFpbXBvcnRhbnQ7IjsnCiAgICAgICAvKiBTYXZlIG9yaWdpbmFsIHBhcmVudCBmb3IgcmVzdG9yYXRpb24gb24gY2xvc2UgKi8KICAgICAgIC4gJyAgdmFyIGl0ZW1zT3JpZ1BhcmVudCA9IGl0ZW1zID8gaXRlbXMucGFyZW50Tm9kZSA6IG51bGw7JwogICAgICAgLiAnICB2YXIgaXRlbXNPcmlnTmV4dFNpYmxpbmcgPSBpdGVtcyA/IGl0ZW1zLm5leHRTaWJsaW5nIDogbnVsbDsnCiAgICAgICAuICcgIHZhciBidG5DbG9zZU9yaWdQYXJlbnQgPSBidG5DbG9zZSA/IGJ0bkNsb3NlLnBhcmVudE5vZGUgOiBudWxsOycKICAgICAgIC4gJyAgdmFyIGJ0bkNsb3NlT3JpZ05leHQgPSBidG5DbG9zZSA/IGJ0bkNsb3NlLm5leHRTaWJsaW5nIDogbnVsbDsnCiAgICAgICAuICcgIGlmIChuYXYgJiYgYnRuT3BlbiAmJiBpdGVtcykgeyBidG5PcGVuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IG5hdi5jbGFzc0xpc3QuYWRkKCJicngtb3BlbiIpOyAvKiBSRUxPQ0FURSBpdGVtcyArIGNsb3NlIGJ1dHRvbiB0byBib2R5IHJvb3QgdG8gZXNjYXBlIHRyYXBwZWQgc3RhY2tpbmcgY29udGV4dCAqLyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGl0ZW1zKTsgaWYgKGJ0bkNsb3NlKSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJ0bkNsb3NlKTsgaXRlbXMuc3R5bGUuY3NzVGV4dCA9IE9WRVJMQVlfQ1NTOyBpZiAoYnRuQ2xvc2UpIGJ0bkNsb3NlLnN0eWxlLmNzc1RleHQgPSBDTE9TRV9DU1M7IGJ0bk9wZW4uc3R5bGUuZGlzcGxheSA9ICJub25lIjsgW10uZm9yRWFjaC5jYWxsKGl0ZW1zLnF1ZXJ5U2VsZWN0b3JBbGwoImEuYnJ4ZS10ZXh0LWxpbmsiKSwgZnVuY3Rpb24oYSl7IGEuc3R5bGUuY3NzVGV4dCA9IExJTktfQ1NTOyB9KTsgYnRuT3Blbi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAidHJ1ZSIpOyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsgfSk7IH0nCiAgICAgICAuICcgIGlmIChuYXYgJiYgYnRuQ2xvc2UgJiYgaXRlbXMpIHsgYnRuQ2xvc2UuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKSB7IGUucHJldmVudERlZmF1bHQoKTsgbmF2LmNsYXNzTGlzdC5yZW1vdmUoImJyeC1vcGVuIik7IGl0ZW1zLnN0eWxlLmNzc1RleHQgPSAiIjsgYnRuQ2xvc2Uuc3R5bGUuY3NzVGV4dCA9ICIiOyBidG5PcGVuLnN0eWxlLmRpc3BsYXkgPSAiIjsgW10uZm9yRWFjaC5jYWxsKGl0ZW1zLnF1ZXJ5U2VsZWN0b3JBbGwoImEuYnJ4ZS10ZXh0LWxpbmsiKSwgZnVuY3Rpb24oYSl7IGEuc3R5bGUuY3NzVGV4dCA9ICIiOyB9KTsgLyogUkVTVE9SRSBvcmlnaW5hbCBwYXJlbnQgKi8gaWYgKGl0ZW1zT3JpZ1BhcmVudCkgaXRlbXNPcmlnUGFyZW50Lmluc2VydEJlZm9yZShpdGVtcywgaXRlbXNPcmlnTmV4dFNpYmxpbmcpOyBpZiAoYnRuQ2xvc2VPcmlnUGFyZW50KSBidG5DbG9zZU9yaWdQYXJlbnQuaW5zZXJ0QmVmb3JlKGJ0bkNsb3NlLCBidG5DbG9zZU9yaWdOZXh0KTsgYnRuT3Blbi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKTsgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gIiI7IH0pOyB9JwogICAgICAgLyogQ2xvc2Ugb24gRXNjYXBlIGtleSAqLwogICAgICAgLiAnICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgZnVuY3Rpb24oZSkgeyBpZiAoZS5rZXkgPT09ICJFc2NhcGUiICYmIG5hdiAmJiBuYXYuY2xhc3NMaXN0LmNvbnRhaW5zKCJicngtb3BlbiIpKSB7IG5hdi5jbGFzc0xpc3QucmVtb3ZlKCJicngtb3BlbiIpOyBpZiAoYnRuT3BlbikgYnRuT3Blbi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKTsgfSB9KTsnCiAgICAgICAuICd9KTsnCiAgICAgICAuICc8L3NjcmlwdD4nIC4gIlxuIjsKfSwgOTk4KTsKCi8qKiBGb290ZXIgYXQgd3BfZm9vdGVyLCBwcmlvcml0eSA5OTkg4oCUIFJFLUVOQUJMRUQgMjAyNi0wNS0wOCAodjI3YikgcGVyIFJvYmVydCBkaXJlY3RpdmUuCiAqICBSZW5kZXJzIEF1ZHJleSdzIG5ldyBCcmlja3MgdGVtcGxhdGUgaWQ9OTYwIChyZXBsYWNpbmcgcHJpb3IgQ0MtYnVpbHQgdGVtcGxhdGUgaWQ9MTA2KS4KICogIENpdGU6IMKnODUuSiArIMKnODUuVCArIFJvYmVydCBNYXkgOCBQTSAiW2JyaWNrc190ZW1wbGF0ZSBpZD1cIjk2MFwiXSBpcyB0aGUgZm9vdGVyIi4gKi8KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7CiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JyaWNrc19pc19idWlsZGVyX21haW4nKSAmJiBicmlja3NfaXNfYnVpbGRlcl9tYWluKCkpIHJldHVybjsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JzcF9yZW5kZXJfYnJpY2tzX3RlbXBsYXRlJykpIHsKICAgICAgICBic3BfcmVuZGVyX2JyaWNrc190ZW1wbGF0ZSg5NjAsICdmb290ZXInKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyBkb19zaG9ydGNvZGUoJ1ticmlja3NfdGVtcGxhdGUgaWQ9Ijk2MCJdJyk7CiAgICB9Cn0sIDk5OSk7Ci8qKgogKiBGb290ZXIgc29jaWFsIGFuY2hvciBocmVmIGZpeCAoQXByIDE1KQogKiBCcmlja3MgMi4zLjIgaW1hZ2UgZWxlbWVudCB3cmFwcyBpbWFnZXMgaW4gPGEgY2xhc3M9ImJyeGUtaW1hZ2UgdGFnIj4gYnV0CiAqIGRvZXMgbm90IGVtaXQgaHJlZi4gV2UgaW5qZWN0IGhyZWZzIGZvciB0aGUgNiBzb2NpYWwgaWNvbnMgaW4gdGhlIFNvY2lhbAogKiBSb3cgYmxvY2sgKHBhcmVudCBpZD05MDMwYTEgaW4gZm9vdGVyIHRlbXBsYXRlIDEwNikgdmlhIHJlZ2V4IHJld3JpdGUgb24KICogdGhlIGZpbmFsIEhUTUwgcmVzcG9uc2UuIEtleWVkIGJ5IGVhY2ggaWNvbidzIGVsZW1lbnQgaWQuCiAqLwphZGRfYWN0aW9uKCd0ZW1wbGF0ZV9yZWRpcmVjdCcsIGZ1bmN0aW9uKCkgewogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47CiAgICBvYl9zdGFydChmdW5jdGlvbigkaHRtbCkgewogICAgICAgICRtYXAgPSBbCiAgICAgICAgICAgICc5OWM0NmYnID0+ICdodHRwczovL3d3dy5mYWNlYm9vay5jb20vY2FsbGJyaWdodHNpZGVwbHVtYmluZy8nLAogICAgICAgICAgICAnMTM3YTlkJyA9PiAnaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9jYWxsYnJpZ2h0c2lkZXBsdW1iaW5nLycsCiAgICAgICAgICAgICc5ZjNjZTYnID0+ICdodHRwczovL3guY29tL0NhbGxCcmlnaHRTaWRlJywKICAgICAgICAgICAgJ2I2NDZlNicgPT4gJ2h0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L2JyaWdodC1zaWRlLXBsdW1iaW5nLycsCiAgICAgICAgICAgICc5YTUwYzQnID0+ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDU3BMSDV5cUlKaGRoRUVWZUVIT3U4UScsCiAgICAgICAgICAgICdiZjUxYTknID0+ICdodHRwczovL3d3dy5waW50ZXJlc3QuY29tL2NhbGxicmlnaHRzaWRlLycsCiAgICAgICAgXTsKICAgICAgICBmb3JlYWNoICgkbWFwIGFzICRpZCA9PiAkdXJsKSB7CiAgICAgICAgICAgICRlc2MgPSBlc2NfdXJsKCR1cmwpOwogICAgICAgICAgICAkaHRtbCA9IHByZWdfcmVwbGFjZSgKICAgICAgICAgICAgICAgICcvPGFccytpZD0iYnJ4ZS0nIC4gcHJlZ19xdW90ZSgkaWQsICcvJykgLiAnIihbXj5dKik+LycsCiAgICAgICAgICAgICAgICAnPGEgaWQ9ImJyeGUtJyAuICRpZCAuICciIGhyZWY9IicgLiAkZXNjIC4gJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIkMT4nLAogICAgICAgICAgICAgICAgJGh0bWwsCiAgICAgICAgICAgICAgICAxCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0pOwp9LCAwKTsKCgovLyBCU1BfTE9DQVRJT05fU0NIRU1BX0FQUjI3IOKAlCBBcHIgMjcgc2Vzc2lvbiAyIHBhdGggKGQpIOKAlCBzY2hlbWEgaW5qZWN0aW9uIHZpYSB3cF9oZWFkIDk5OS4KLy8gRW1iZWRkZWQgYnJpZWYgZGF0YSBwZXIgL29wdC9uZXh1cy9uZXh1cy9zY3JpcHRzL291dHB1dC9wbGF5Ym9va3MvQlNQX0JyaWNrc19Db2RlYmFzZV9Eb2N1bWVudGF0aW9uLmh0bWwjc2VjdGlvbi00MS1zY2hlbWEtd3BoZWFkLW1pZ3JhdGlvbgovLyBTb3VyY2U6IC90bXAvczdfbG9jXzxzbHVnPl9jb250ZW50X2JyaWVmLmpzb24gKDE0IGNpdGllcykg4oCUIHNjaGVtYS1yZWxldmFudCBmaWVsZHMgb25seS4KLy8gUmUtZGVwbG95IHZpYSAvYnNwL3YyL3RoZW1lL2luc3RhbGwtY2hpbGQgdG8gcmVmcmVzaCBhZnRlciBicmllZiB1cGRhdGVzLgokQlNQX0xPQ0FUSU9OUyA9IFsKICAgICdvbGF0aGUnID0+IFsKICAgICAgICAnY2l0eV9uYW1lJyA9PiAnT2xhdGhlJywKICAgICAgICAnY2l0eV9zbHVnJyA9PiAnb2xhdGhlJywKICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWwogICAgICAgICAgICAnT2xhdGhlIFZpZXcnLAogICAgICAgICAgICAnQ2VkYXIgQ3JlZWsnLAogICAgICAgICAgICAnU3RvbmUgQ2FueW9uJywKICAgICAgICAgICAgJ0ZvcmVzdCBWaWV3JywKICAgICAgICAgICAgJ0FyYm9yIENyZWVrJywKICAgICAgICAgICAgJ1BlcnNpbW1vbiBIaWxsJywKICAgICAgICAgICAgJ0JyaXR0YW55IE1lYWRvd3MnCiAgICAgICAgXSwKICAgICAgICAnbmVhcmJ5X2NpdGllcycgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvdmVybGFuZC1wYXJrJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZWF3b29kJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1NoYXduZWUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZW5leGEnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTWVycmlhbScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ21lcnJpYW0nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICdmYXEnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgT2xhdGhlIG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIE9sYXRoZSBhbmQgZXZlcnkgWklQIGZyb20gNjYwNjEgdG8gNjYwNjMgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCA0IG9mIHRoZW0uIE9sYXRoZSBWaWV3LCBDZWRhciBDcmVlaywgU3RvbmUgQ2FueW9uLCBGb3Jlc3QgVmlldywgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIE9sYXRoZT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIE9sYXRoZSBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIEpvaG5zb24gQ291bnR5IGZvciA1IGdlbmVyYXRpb25zLiBOb3QgYSBuYXRpb25hbCBmcmFuY2hpc2Ug4oCUIGEgZmFtaWx5IGJ1c2luZXNzIHdpdGggb3VyIEhRIGF0IDEyMDIyIEJsdWUgVmFsbGV5IFBrd3ksIE92ZXJsYW5kIFBhcmssIEtTIDY2MjEzLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgbXVjaCBkb2VzIGEgc2VydmljZSBjYWxsIGNvc3Q/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBPbGF0aGUgaG9tZW93bmVycyB0cnVzdCBCcmlnaHQgU2lkZSBQbHVtYmluZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnemlwcycgPT4gWwogICAgICAgICAgICAnNjYwNjEnLAogICAgICAgICAgICAnNjYwNjInLAogICAgICAgICAgICAnNjYwNTEnLAogICAgICAgICAgICAnNjYwNjMnCiAgICAgICAgXQogICAgXSwKICAgICdsZWF3b29kJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0xlYXdvb2QnLAogICAgICAgICdjaXR5X3NsdWcnID0+ICdsZWF3b29kJywKICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWwogICAgICAgICAgICAnTGVhd29vZCcsCiAgICAgICAgICAgICdMZWF3b29kIFNvdXRoJywKICAgICAgICAgICAgJ0xlYXdvb2QgVmlsbGFnZScsCiAgICAgICAgICAgICdMZWF3b29kIFRvd24gQ2VudGVyJywKICAgICAgICAgICAgJ0xlYXdvb2QgSGlsbHMnLAogICAgICAgICAgICAnTGVhd29vZCBFc3RhdGVzJywKICAgICAgICAgICAgJ0xlYXdvb2QgRmFsbHMnLAogICAgICAgICAgICAnTGVhd29vZCBNZWFkb3dzJwogICAgICAgIF0sCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvbGF0aGUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAncHJhaXJpZS12aWxsYWdlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlbmV4YScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdNZXJyaWFtJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbWVycmlhbScKICAgICAgICAgICAgXQogICAgICAgIF0sCiAgICAgICAgJ2ZhcScgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBMZWF3b29kIG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIExlYXdvb2QgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MjA2IHRvIDY2MjI0IGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgNCBvZiB0aGVtLiBMZWF3b29kLCBMZWF3b29kIFNvdXRoLCBMZWF3b29kIFZpbGxhZ2UsIExlYXdvb2QgVG93biBDZW50ZXIsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBMZWF3b29kPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgTGVhd29vZCBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIEpvaG5zb24gQ291bnR5IGZvciA1IGdlbmVyYXRpb25zLiBOb3QgYSBuYXRpb25hbCBmcmFuY2hpc2Ug4oCUIGEgZmFtaWx5IGJ1c2luZXNzIHdpdGggb3VyIEhRIGF0IDEyMDIyIEJsdWUgVmFsbGV5IFBrd3ksIE92ZXJsYW5kIFBhcmssIEtTIDY2MjEzLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgbXVjaCBkb2VzIGEgc2VydmljZSBjYWxsIGNvc3Q/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBMZWF3b29kIGhvbWVvd25lcnMgdHJ1c3QgQnJpZ2h0IFNpZGUgUGx1bWJpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnNSBnZW5lcmF0aW9ucyBvZiBwbHVtYmVycyDigJQgc2FtZSBmYW1pbHksIHNhbWUgT3ZlcmxhbmQgUGFyayBIUSwgc2luY2UgdGhlIDE5MjBzLiBBKyBCQkIuIDQuOSBzdGFycyAoMzg0KyBHb29nbGUgcmV2aWV3cykuIExpY2Vuc2VkICsgaW5zdXJlZC4gRXZlcnkgcmVwYWlyIHJldmlld2VkIG9yIHBlcmZvcm1lZCBieSBhIGxpY2Vuc2VkIG1hc3RlciBwbHVtYmVyLicKICAgICAgICAgICAgXQogICAgICAgIF0sCiAgICAgICAgJ3ppcHMnID0+IFsKICAgICAgICAgICAgJzY2MjA2JywKICAgICAgICAgICAgJzY2MjA5JywKICAgICAgICAgICAgJzY2MjExJywKICAgICAgICAgICAgJzY2MjI0JwogICAgICAgIF0KICAgIF0sCiAgICAnbGVuZXhhJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0xlbmV4YScsCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ2xlbmV4YScsCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsKICAgICAgICAgICAgJ0xlbmV4YSBXZXN0JywKICAgICAgICAgICAgJ0NvdW50cnkgSGlsbCcsCiAgICAgICAgICAgICdMZW5leGEgQ2VudGVyJywKICAgICAgICAgICAgJ0NvbG9ueSBXb29kcycsCiAgICAgICAgICAgICdMZW5leGEgSGlsbHMgRWFzdCcsCiAgICAgICAgICAgICdTdGVybGluZyBPZiBMZW5leGEnLAogICAgICAgICAgICAnRmFsY29uIFZhbGxleScsCiAgICAgICAgICAgICdDYW55b24gQ3JlZWsnCiAgICAgICAgXSwKICAgICAgICAnbmVhcmJ5X2NpdGllcycgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvdmVybGFuZC1wYXJrJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ09sYXRoZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnc2hhd25lZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdQcmFpcmllIFZpbGxhZ2UnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTWVycmlhbScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ21lcnJpYW0nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICdmYXEnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgTGVuZXhhIG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIExlbmV4YSBhbmQgZXZlcnkgWklQIGZyb20gNjYyMTUgdG8gNjYyMjcgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCA0IG9mIHRoZW0uIExlbmV4YSBXZXN0LCBDb3VudHJ5IEhpbGwsIExlbmV4YSBDZW50ZXIsIENvbG9ueSBXb29kcywgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIExlbmV4YT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIExlbmV4YSBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIEpvaG5zb24gQ291bnR5IGZvciA1IGdlbmVyYXRpb25zLiBOb3QgYSBuYXRpb25hbCBmcmFuY2hpc2Ug4oCUIGEgZmFtaWx5IGJ1c2luZXNzIHdpdGggb3VyIEhRIGF0IDEyMDIyIEJsdWUgVmFsbGV5IFBrd3ksIE92ZXJsYW5kIFBhcmssIEtTIDY2MjEzLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgbXVjaCBkb2VzIGEgc2VydmljZSBjYWxsIGNvc3Q/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBMZW5leGEgaG9tZW93bmVycyB0cnVzdCBCcmlnaHQgU2lkZSBQbHVtYmluZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnemlwcycgPT4gWwogICAgICAgICAgICAnNjYyMTUnLAogICAgICAgICAgICAnNjYyMTknLAogICAgICAgICAgICAnNjYyMjAnLAogICAgICAgICAgICAnNjYyMjcnCiAgICAgICAgXQogICAgXSwKICAgICdzaGF3bmVlJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ1NoYXduZWUnLAogICAgICAgICdjaXR5X3NsdWcnID0+ICdzaGF3bmVlJywKICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWwogICAgICAgICAgICAnU2hhd25lZScsCiAgICAgICAgICAgICdNb250aWNlbGxvJywKICAgICAgICAgICAgJ1dvb2Rzb25pYScsCiAgICAgICAgICAgICdTaGF3bmVlIE1pc3Npb24gUGFyaycsCiAgICAgICAgICAgICdDbGVhciBDcmVlaycsCiAgICAgICAgICAgICdTaWx2ZXJoZWVsIFdvb2RzJwogICAgICAgIF0sCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvbGF0aGUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVhd29vZCcsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAncHJhaXJpZS12aWxsYWdlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlbmV4YScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdNZXJyaWFtJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbWVycmlhbScKICAgICAgICAgICAgXQogICAgICAgIF0sCiAgICAgICAgJ2ZhcScgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBTaGF3bmVlIG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIFNoYXduZWUgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MjAzIHRvIDY2MjI2IGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgNSBvZiB0aGVtLiBTaGF3bmVlLCBNb250aWNlbGxvLCBXb29kc29uaWEsIFNoYXduZWUgTWlzc2lvbiBQYXJrLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gU2hhd25lZT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIFNoYXduZWUgaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1VwZnJvbnQgZmxhdC1yYXRlIHByaWNpbmcgYmVmb3JlIGFueSB3b3JrIHN0YXJ0cy4gTm8gaG91cmx5IHN1cnByaXNlcy4gU2VydmljZSBjYWxsIGZlZSBpcyB3YWl2ZWQgd2hlbiB5b3UgYXBwcm92ZSB0aGUgcmVwYWlyLiBGcmVlIGVzdGltYXRlcyBvbiBtYWpvciB3b3JrLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugb2ZmZXIgZmluYW5jaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgU2hhd25lZSBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICd6aXBzJyA9PiBbCiAgICAgICAgICAgICc2NjIwMycsCiAgICAgICAgICAgICc2NjIxNicsCiAgICAgICAgICAgICc2NjIxNycsCiAgICAgICAgICAgICc2NjIxOCcsCiAgICAgICAgICAgICc2NjIyNicKICAgICAgICBdCiAgICBdLAogICAgJ3ByYWlyaWUtdmlsbGFnZScgPT4gWwogICAgICAgICdjaXR5X25hbWUnID0+ICdQcmFpcmllIFZpbGxhZ2UnLAogICAgICAgICdjaXR5X3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnLAogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbCiAgICAgICAgICAgICdQcmFpcmllIEhpbGxzJywKICAgICAgICAgICAgJ1ByYWlyaWUgUmlkZ2UnLAogICAgICAgICAgICAnUHJhaXJpZSBGaWVsZHMnLAogICAgICAgICAgICAnUHJhaXJpZSBWaWxsYWdlJywKICAgICAgICAgICAgJ05ldyBWaWxsYWdlIEF0IFByYWlyaWUgSGF2ZW4nLAogICAgICAgICAgICAnU29tZXJzZXQgSGlsbHMnLAogICAgICAgICAgICAnTWlzc2lvbiBIaWxscycsCiAgICAgICAgICAgICdDb3JpbnRoJwogICAgICAgIF0sCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvbGF0aGUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVhd29vZCcsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ01lcnJpYW0nLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdtZXJyaWFtJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnZmFxJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IFByYWlyaWUgVmlsbGFnZSBuZWlnaGJvcmhvb2Q/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBQcmFpcmllIFZpbGxhZ2UgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MjA2IHRvIDY2MjA4IGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMyBvZiB0aGVtLiBQcmFpcmllIEhpbGxzLCBQcmFpcmllIFJpZGdlLCBQcmFpcmllIEZpZWxkcywgUHJhaXJpZSBWaWxsYWdlLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gUHJhaXJpZSBWaWxsYWdlPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgUHJhaXJpZSBWaWxsYWdlIGlzIDYwIG1pbnV0ZXMuIEVtZXJnZW5jeT8gQ2FsbCAoOTEzKSA5NjMtMTAyOSBhbmQgYSBkaXNwYXRjaGVyIHBpY2tzIHVwIGluIDE1IHNlY29uZHMsIDI0LzcuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0FyZSB5b3UgbGljZW5zZWQgaW4gSm9obnNvbiBDb3VudHk/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIDAlIEFQUiBmb3IgMTIgbW9udGhzIG9uIHF1YWxpZmllZCBpbnN0YWxscyAod2F0ZXIgaGVhdGVycywgc2V3ZXIgcmVwbGFjZW1lbnQsIHN1bXAgcHVtcHMpLiBQbHVzIDYvMTIvMTgtbW9udGggcGxhbnMgdGhyb3VnaCBXaXNldGFjay4gQXNrIHlvdXIgdGVjaCBvbi1zaXRlLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdXaHkgc2hvdWxkIFByYWlyaWUgVmlsbGFnZSBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICd6aXBzJyA9PiBbCiAgICAgICAgICAgICc2NjIwNicsCiAgICAgICAgICAgICc2NjIwNycsCiAgICAgICAgICAgICc2NjIwOCcKICAgICAgICBdCiAgICBdLAogICAgJ2thbnNhcy1jaXR5JyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0thbnNhcyBDaXR5JywKICAgICAgICAnY2l0eV9zbHVnJyA9PiAna2Fuc2FzLWNpdHknLAogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbCiAgICAgICAgICAgICdSb3NlZGFsZScsCiAgICAgICAgICAgICdWaWN0b3J5IEhpbGxzJywKICAgICAgICAgICAgJ011bmNpZScsCiAgICAgICAgICAgICdOZWFybWFuIEhpbGxzJywKICAgICAgICAgICAgJ0ktNDM1IFdlc3QgS0MtS1MnCiAgICAgICAgXSwKICAgICAgICAnbmVhcmJ5X2NpdGllcycgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvdmVybGFuZC1wYXJrJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ09sYXRoZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnc2hhd25lZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdQcmFpcmllIFZpbGxhZ2UnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnZmFxJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IEthbnNhcyBDaXR5IG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIEthbnNhcyBDaXR5IGFuZCBldmVyeSBaSVAgZnJvbSA2NDEwOCB0byA2NjExMiBpZiB3ZVwncmUgY292ZXJpbmcgYWxsIDE2IG9mIHRoZW0uIFJvc2VkYWxlLCBWaWN0b3J5IEhpbGxzLCBNdW5jaWUsIE5lYXJtYW4gSGlsbHMsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBLYW5zYXMgQ2l0eT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIEthbnNhcyBDaXR5IGlzIDYwIG1pbnV0ZXMuIEVtZXJnZW5jeT8gQ2FsbCAoOTEzKSA5NjMtMTAyOSBhbmQgYSBkaXNwYXRjaGVyIHBpY2tzIHVwIGluIDE1IHNlY29uZHMsIDI0LzcuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0FyZSB5b3UgbGljZW5zZWQgaW4gV3lhbmRvdHRlL0phY2tzb24gQ291bnR5PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIFd5YW5kb3R0ZS9KYWNrc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1VwZnJvbnQgZmxhdC1yYXRlIHByaWNpbmcgYmVmb3JlIGFueSB3b3JrIHN0YXJ0cy4gTm8gaG91cmx5IHN1cnByaXNlcy4gU2VydmljZSBjYWxsIGZlZSBpcyB3YWl2ZWQgd2hlbiB5b3UgYXBwcm92ZSB0aGUgcmVwYWlyLiBGcmVlIGVzdGltYXRlcyBvbiBtYWpvciB3b3JrLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugb2ZmZXIgZmluYW5jaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgS2Fuc2FzIENpdHkgaG9tZW93bmVycyB0cnVzdCBCcmlnaHQgU2lkZSBQbHVtYmluZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnemlwcycgPT4gWwogICAgICAgICAgICAnNjQxMDgnLAogICAgICAgICAgICAnNjQxMDknLAogICAgICAgICAgICAnNjQxMTAnLAogICAgICAgICAgICAnNjQxMTEnLAogICAgICAgICAgICAnNjQxMTInLAogICAgICAgICAgICAnNjQxMTMnLAogICAgICAgICAgICAnNjQxMTQnLAogICAgICAgICAgICAnNjQxMzInLAogICAgICAgICAgICAnNjYxMDEnLAogICAgICAgICAgICAnNjYxMDInLAogICAgICAgICAgICAnNjYxMDMnLAogICAgICAgICAgICAnNjYxMDQnLAogICAgICAgICAgICAnNjYxMDUnLAogICAgICAgICAgICAnNjYxMDYnLAogICAgICAgICAgICAnNjYxMDknLAogICAgICAgICAgICAnNjYxMTInCiAgICAgICAgXQogICAgXSwKICAgICdtZXJyaWFtJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ01lcnJpYW0nLAogICAgICAgICdjaXR5X3NsdWcnID0+ICdtZXJyaWFtJywKICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWwogICAgICAgICAgICAnSG9ja2VyIEdyb3ZlJywKICAgICAgICAgICAgJ0tpbmdzIENvdmUnLAogICAgICAgICAgICAnTWlsYnVybiBXZXN0JywKICAgICAgICAgICAgJ01lcnJpYW0gR3JvdmUnLAogICAgICAgICAgICAnV2VzdCBWZXJub24gUGxhY2UnLAogICAgICAgICAgICAnT3dlbiBIZWlnaHRzJywKICAgICAgICAgICAgJ0FudGlvY2ggSGlsbHMnCiAgICAgICAgXSwKICAgICAgICAnbmVhcmJ5X2NpdGllcycgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvdmVybGFuZC1wYXJrJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ09sYXRoZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnc2hhd25lZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdQcmFpcmllIFZpbGxhZ2UnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnZmFxJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IE1lcnJpYW0gbmVpZ2hib3Job29kPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgTWVycmlhbSBhbmQgZXZlcnkgWklQIGZyb20gNjYyMDMgdG8gNjYyMDQgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCAyIG9mIHRoZW0uIEhvY2tlciBHcm92ZSwgS2luZ3MgQ292ZSwgTWlsYnVybiBXZXN0LCBNZXJyaWFtIEdyb3ZlLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gTWVycmlhbT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIE1lcnJpYW0gaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1VwZnJvbnQgZmxhdC1yYXRlIHByaWNpbmcgYmVmb3JlIGFueSB3b3JrIHN0YXJ0cy4gTm8gaG91cmx5IHN1cnByaXNlcy4gU2VydmljZSBjYWxsIGZlZSBpcyB3YWl2ZWQgd2hlbiB5b3UgYXBwcm92ZSB0aGUgcmVwYWlyLiBGcmVlIGVzdGltYXRlcyBvbiBtYWpvciB3b3JrLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugb2ZmZXIgZmluYW5jaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgTWVycmlhbSBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICd6aXBzJyA9PiBbCiAgICAgICAgICAgICc2NjIwMycsCiAgICAgICAgICAgICc2NjIwNCcKICAgICAgICBdCiAgICBdLAogICAgJ21pc3Npb24nID0+IFsKICAgICAgICAnY2l0eV9uYW1lJyA9PiAnTWlzc2lvbicsCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ21pc3Npb24nLAogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbCiAgICAgICAgICAgICdSb3NlbGFuZCBQYXJrJywKICAgICAgICAgICAgJ0Jyb2FkbW9vcicsCiAgICAgICAgICAgICdDb3VudHJ5c2lkZScsCiAgICAgICAgICAgICdNaXNzaW9uIFdvb2RzJywKICAgICAgICAgICAgJ0luZGlhbiBIaWxscycsCiAgICAgICAgICAgICdSb2NrIENyZWVrJwogICAgICAgIF0sCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvbGF0aGUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVhd29vZCcsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAncHJhaXJpZS12aWxsYWdlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlbmV4YScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScKICAgICAgICAgICAgXQogICAgICAgIF0sCiAgICAgICAgJ2ZhcScgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBNaXNzaW9uIG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIE1pc3Npb24gYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MjAyIHRvIDY2MjA1IGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMiBvZiB0aGVtLiBSb3NlbGFuZCBQYXJrLCBCcm9hZG1vb3IsIENvdW50cnlzaWRlLCBNaXNzaW9uIFdvb2RzLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gTWlzc2lvbj8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIE1pc3Npb24gaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1VwZnJvbnQgZmxhdC1yYXRlIHByaWNpbmcgYmVmb3JlIGFueSB3b3JrIHN0YXJ0cy4gTm8gaG91cmx5IHN1cnByaXNlcy4gU2VydmljZSBjYWxsIGZlZSBpcyB3YWl2ZWQgd2hlbiB5b3UgYXBwcm92ZSB0aGUgcmVwYWlyLiBGcmVlIGVzdGltYXRlcyBvbiBtYWpvciB3b3JrLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugb2ZmZXIgZmluYW5jaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgTWlzc2lvbiBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICd6aXBzJyA9PiBbCiAgICAgICAgICAgICc2NjIwMicsCiAgICAgICAgICAgICc2NjIwNScKICAgICAgICBdCiAgICBdLAogICAgJ3NwcmluZy1oaWxsJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ1NwcmluZyBIaWxsJywKICAgICAgICAnY2l0eV9zbHVnJyA9PiAnc3ByaW5nLWhpbGwnLAogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbCiAgICAgICAgICAgICdCcm9va3dvb2QgRmFybXMnLAogICAgICAgICAgICAnV29vZGxhbmQgUmlkZ2UnLAogICAgICAgICAgICAnRm94d29vZCBSYW5jaCcsCiAgICAgICAgICAgICdEYXl0b24gQ3JlZWsnLAogICAgICAgICAgICAnQm91bGRlciBTcHJpbmdzJywKICAgICAgICAgICAgJ1dvbGYgQ3JlZWsgRXN0YXRlcycKICAgICAgICBdLAogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT3ZlcmxhbmQgUGFyaycsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZWF3b29kJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1NoYXduZWUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZW5leGEnCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICdmYXEnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgU3ByaW5nIEhpbGwgbmVpZ2hib3Job29kPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgU3ByaW5nIEhpbGwgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MDgzIHRvIDY2MDgzIGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMSBvZiB0aGVtLiBCcm9va3dvb2QgRmFybXMsIFdvb2RsYW5kIFJpZGdlLCBGb3h3b29kIFJhbmNoLCBEYXl0b24gQ3JlZWssIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBTcHJpbmcgSGlsbD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIFNwcmluZyBIaWxsIGlzIDYwIG1pbnV0ZXMuIEVtZXJnZW5jeT8gQ2FsbCAoOTEzKSA5NjMtMTAyOSBhbmQgYSBkaXNwYXRjaGVyIHBpY2tzIHVwIGluIDE1IHNlY29uZHMsIDI0LzcuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0FyZSB5b3UgbGljZW5zZWQgaW4gSm9obnNvbiBDb3VudHk/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIDAlIEFQUiBmb3IgMTIgbW9udGhzIG9uIHF1YWxpZmllZCBpbnN0YWxscyAod2F0ZXIgaGVhdGVycywgc2V3ZXIgcmVwbGFjZW1lbnQsIHN1bXAgcHVtcHMpLiBQbHVzIDYvMTIvMTgtbW9udGggcGxhbnMgdGhyb3VnaCBXaXNldGFjay4gQXNrIHlvdXIgdGVjaCBvbi1zaXRlLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdXaHkgc2hvdWxkIFNwcmluZyBIaWxsIGhvbWVvd25lcnMgdHJ1c3QgQnJpZ2h0IFNpZGUgUGx1bWJpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnNSBnZW5lcmF0aW9ucyBvZiBwbHVtYmVycyDigJQgc2FtZSBmYW1pbHksIHNhbWUgT3ZlcmxhbmQgUGFyayBIUSwgc2luY2UgdGhlIDE5MjBzLiBBKyBCQkIuIDQuOSBzdGFycyAoMzg0KyBHb29nbGUgcmV2aWV3cykuIExpY2Vuc2VkICsgaW5zdXJlZC4gRXZlcnkgcmVwYWlyIHJldmlld2VkIG9yIHBlcmZvcm1lZCBieSBhIGxpY2Vuc2VkIG1hc3RlciBwbHVtYmVyLicKICAgICAgICAgICAgXQogICAgICAgIF0sCiAgICAgICAgJ3ppcHMnID0+IFsKICAgICAgICAgICAgJzY2MDgzJwogICAgICAgIF0KICAgIF0sCiAgICAnc3RpbHdlbGwnID0+IFsKICAgICAgICAnY2l0eV9uYW1lJyA9PiAnU3RpbHdlbGwnLAogICAgICAgICdjaXR5X3NsdWcnID0+ICdzdGlsd2VsbCcsCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsKICAgICAgICAgICAgJ01pbGxzIEZhcm0nLAogICAgICAgICAgICAnVGVycnlicm9vayBGYXJtcycsCiAgICAgICAgICAgICdXaWxkd29vZCBFc3RhdGVzJywKICAgICAgICAgICAgJ0JsdWUgVmFsbGV5IEhlaWdodHMnLAogICAgICAgICAgICAnTWV0Y2FsZiBNZWFkb3dzJywKICAgICAgICAgICAgJ01pc3Npb24gRmFsbHMgRXN0YXRlcycKICAgICAgICBdLAogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT3ZlcmxhbmQgUGFyaycsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZWF3b29kJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1NoYXduZWUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZW5leGEnCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICdmYXEnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgU3RpbHdlbGwgbmVpZ2hib3Job29kPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgU3RpbHdlbGwgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MDg1IHRvIDY2MDg1IGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMSBvZiB0aGVtLiBNaWxscyBGYXJtLCBUZXJyeWJyb29rIEZhcm1zLCBXaWxkd29vZCBFc3RhdGVzLCBCbHVlIFZhbGxleSBIZWlnaHRzLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gU3RpbHdlbGw/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBTdGlsd2VsbCBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIEpvaG5zb24gQ291bnR5IGZvciA1IGdlbmVyYXRpb25zLiBOb3QgYSBuYXRpb25hbCBmcmFuY2hpc2Ug4oCUIGEgZmFtaWx5IGJ1c2luZXNzIHdpdGggb3VyIEhRIGF0IDEyMDIyIEJsdWUgVmFsbGV5IFBrd3ksIE92ZXJsYW5kIFBhcmssIEtTIDY2MjEzLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgbXVjaCBkb2VzIGEgc2VydmljZSBjYWxsIGNvc3Q/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBTdGlsd2VsbCBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICd6aXBzJyA9PiBbCiAgICAgICAgICAgICc2NjA4NScKICAgICAgICBdCiAgICBdLAogICAgJ2Jvbm5lci1zcHJpbmdzJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0Jvbm5lciBTcHJpbmdzJywKICAgICAgICAnY2l0eV9zbHVnJyA9PiAnYm9ubmVyLXNwcmluZ3MnLAogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbCiAgICAgICAgICAgICdDZWRhciBSaWRnZScsCiAgICAgICAgICAgICdDZWRhciBTcHJpbmdzJywKICAgICAgICAgICAgJ0NvdHRhZ2VzIG9mIENlZGFyIFNwcmluZ3MnLAogICAgICAgICAgICAnTGVpIFZhbGxleScKICAgICAgICBdLAogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT3ZlcmxhbmQgUGFyaycsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZWF3b29kJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1NoYXduZWUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZW5leGEnCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICdmYXEnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgQm9ubmVyIFNwcmluZ3MgbmVpZ2hib3Job29kPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgQm9ubmVyIFNwcmluZ3MgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MDEyIHRvIDY2MDEyIGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMSBvZiB0aGVtLiBDZWRhciBSaWRnZSwgQ2VkYXIgU3ByaW5ncywgQ290dGFnZXMgb2YgQ2VkYXIgU3ByaW5ncywgTGVpIFZhbGxleSwgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIEJvbm5lciBTcHJpbmdzPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgQm9ubmVyIFNwcmluZ3MgaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBXeWFuZG90dGUgQ291bnR5PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIFd5YW5kb3R0ZSBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIDAlIEFQUiBmb3IgMTIgbW9udGhzIG9uIHF1YWxpZmllZCBpbnN0YWxscyAod2F0ZXIgaGVhdGVycywgc2V3ZXIgcmVwbGFjZW1lbnQsIHN1bXAgcHVtcHMpLiBQbHVzIDYvMTIvMTgtbW9udGggcGxhbnMgdGhyb3VnaCBXaXNldGFjay4gQXNrIHlvdXIgdGVjaCBvbi1zaXRlLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdXaHkgc2hvdWxkIEJvbm5lciBTcHJpbmdzIGhvbWVvd25lcnMgdHJ1c3QgQnJpZ2h0IFNpZGUgUGx1bWJpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnNSBnZW5lcmF0aW9ucyBvZiBwbHVtYmVycyDigJQgc2FtZSBmYW1pbHksIHNhbWUgT3ZlcmxhbmQgUGFyayBIUSwgc2luY2UgdGhlIDE5MjBzLiBBKyBCQkIuIDQuOSBzdGFycyAoMzg0KyBHb29nbGUgcmV2aWV3cykuIExpY2Vuc2VkICsgaW5zdXJlZC4gRXZlcnkgcmVwYWlyIHJldmlld2VkIG9yIHBlcmZvcm1lZCBieSBhIGxpY2Vuc2VkIG1hc3RlciBwbHVtYmVyLicKICAgICAgICAgICAgXQogICAgICAgIF0sCiAgICAgICAgJ3ppcHMnID0+IFsKICAgICAgICAgICAgJzY2MDEyJwogICAgICAgIF0KICAgIF0sCiAgICAnZ2FyZG5lcicgPT4gWwogICAgICAgICdjaXR5X25hbWUnID0+ICdHYXJkbmVyJywKICAgICAgICAnY2l0eV9zbHVnJyA9PiAnZ2FyZG5lcicsCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsKICAgICAgICAgICAgJ1ByYWlyaWUgVHJhY2UnLAogICAgICAgICAgICAnU3ltcGhvbnkgRmFybXMnLAogICAgICAgICAgICAnQ29wcGVyIFNwcmluZ3MnLAogICAgICAgICAgICAnR2VuZXNpcyBDcmVlayBFc3RhdGVzJywKICAgICAgICAgICAgJ1B1bXBraW4gUmlkZ2UnLAogICAgICAgICAgICAnVHVzY2FueSBWaWxsYWdlJywKICAgICAgICAgICAgJ1dpbGxvdyBTcHJpbmdzJwogICAgICAgIF0sCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvbGF0aGUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVhd29vZCcsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAncHJhaXJpZS12aWxsYWdlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlbmV4YScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScKICAgICAgICAgICAgXQogICAgICAgIF0sCiAgICAgICAgJ2ZhcScgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBHYXJkbmVyIG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIEdhcmRuZXIgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MDMwIHRvIDY2MDMwIGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMSBvZiB0aGVtLiBQcmFpcmllIFRyYWNlLCBTeW1waG9ueSBGYXJtcywgQ29wcGVyIFNwcmluZ3MsIEdlbmVzaXMgQ3JlZWsgRXN0YXRlcywgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIEdhcmRuZXI/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBHYXJkbmVyIGlzIDYwIG1pbnV0ZXMuIEVtZXJnZW5jeT8gQ2FsbCAoOTEzKSA5NjMtMTAyOSBhbmQgYSBkaXNwYXRjaGVyIHBpY2tzIHVwIGluIDE1IHNlY29uZHMsIDI0LzcuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0FyZSB5b3UgbGljZW5zZWQgaW4gSm9obnNvbiBDb3VudHk/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIDAlIEFQUiBmb3IgMTIgbW9udGhzIG9uIHF1YWxpZmllZCBpbnN0YWxscyAod2F0ZXIgaGVhdGVycywgc2V3ZXIgcmVwbGFjZW1lbnQsIHN1bXAgcHVtcHMpLiBQbHVzIDYvMTIvMTgtbW9udGggcGxhbnMgdGhyb3VnaCBXaXNldGFjay4gQXNrIHlvdXIgdGVjaCBvbi1zaXRlLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdXaHkgc2hvdWxkIEdhcmRuZXIgaG9tZW93bmVycyB0cnVzdCBCcmlnaHQgU2lkZSBQbHVtYmluZz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnemlwcycgPT4gWwogICAgICAgICAgICAnNjYwMzAnCiAgICAgICAgXQogICAgXSwKICAgICdkZS1zb3RvJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0RlIFNvdG8nLAogICAgICAgICdjaXR5X3NsdWcnID0+ICdkZS1zb3RvJywKICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWwogICAgICAgICAgICAnQ2xlYXJ2aWV3IFZpbGxhZ2UnLAogICAgICAgICAgICAnV2lsZGZsb3dlciBSaWRnZScsCiAgICAgICAgICAgICdBcmJvciBSaWRnZScsCiAgICAgICAgICAgICdDZWRhciBSaWRnZSBXZXN0JywKICAgICAgICAgICAgJ0NlZGFyIFNwcmluZ3MgSUknLAogICAgICAgICAgICAnQ291bnRyeSBDcmVlayBFc3RhdGVzJywKICAgICAgICAgICAgJ0Jyb29rIFdlc3QgRXN0YXRlcycKICAgICAgICBdLAogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT3ZlcmxhbmQgUGFyaycsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZWF3b29kJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1NoYXduZWUnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZW5leGEnCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICdmYXEnID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgRGUgU290byBuZWlnaGJvcmhvb2Q/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBEZSBTb3RvIGFuZCBldmVyeSBaSVAgZnJvbSA2NjAxOCB0byA2NjAxOCBpZiB3ZVwncmUgY292ZXJpbmcgYWxsIDEgb2YgdGhlbS4gQ2xlYXJ2aWV3IFZpbGxhZ2UsIFdpbGRmbG93ZXIgUmlkZ2UsIEFyYm9yIFJpZGdlLCBDZWRhciBSaWRnZSBXZXN0LCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gRGUgU290bz8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIERlIFNvdG8gaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1VwZnJvbnQgZmxhdC1yYXRlIHByaWNpbmcgYmVmb3JlIGFueSB3b3JrIHN0YXJ0cy4gTm8gaG91cmx5IHN1cnByaXNlcy4gU2VydmljZSBjYWxsIGZlZSBpcyB3YWl2ZWQgd2hlbiB5b3UgYXBwcm92ZSB0aGUgcmVwYWlyLiBGcmVlIGVzdGltYXRlcyBvbiBtYWpvciB3b3JrLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugb2ZmZXIgZmluYW5jaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgRGUgU290byBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICd6aXBzJyA9PiBbCiAgICAgICAgICAgICc2NjAxOCcKICAgICAgICBdCiAgICBdLAogICAgJ2VkZ2VydG9uJyA9PiBbCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0VkZ2VydG9uJywKICAgICAgICAnY2l0eV9zbHVnJyA9PiAnZWRnZXJ0b24nLAogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbXSwKICAgICAgICAnbmVhcmJ5X2NpdGllcycgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvdmVybGFuZC1wYXJrJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ09sYXRoZScsCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnc2hhd25lZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdQcmFpcmllIFZpbGxhZ2UnLAogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywKICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJwogICAgICAgICAgICBdCiAgICAgICAgXSwKICAgICAgICAnZmFxJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IEVkZ2VydG9uIG5laWdoYm9yaG9vZD8nLAogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIEVkZ2VydG9uIGFuZCBldmVyeSBaSVAgZnJvbSA2NjAyMSB0byA2NjAyMSBpZiB3ZVwncmUgY292ZXJpbmcgYWxsIDEgb2YgdGhlbS4gLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gRWRnZXJ0b24/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBFZGdlcnRvbiBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIEpvaG5zb24gQ291bnR5IGZvciA1IGdlbmVyYXRpb25zLiBOb3QgYSBuYXRpb25hbCBmcmFuY2hpc2Ug4oCUIGEgZmFtaWx5IGJ1c2luZXNzIHdpdGggb3VyIEhRIGF0IDEyMDIyIEJsdWUgVmFsbGV5IFBrd3ksIE92ZXJsYW5kIFBhcmssIEtTIDY2MjEzLicKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgbXVjaCBkb2VzIGEgc2VydmljZSBjYWxsIGNvc3Q/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJwogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywKICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBFZGdlcnRvbiBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICd6aXBzJyA9PiBbCiAgICAgICAgICAgICc2NjAyMScKICAgICAgICBdCiAgICBdCl07CgovKioKICogYnNwX2J1aWxkX2xvY2F0aW9uX3NjaGVtYSDCtyByZXR1cm5zIEpTT04tTEQgc3RyaW5nIGZvciBnaXZlbiBjaXR5IHNsdWcuCiAqIFNjaGVtYTogTG9jYWxCdXNpbmVzcyArIFBsdW1iZXIgKyBGQVFQYWdlICsgQnJlYWRjcnVtYkxpc3QgQGdyYXBoLgogKiBVc2VzIHdwX2pzb25fZW5jb2RlIChXUCB3cmFwcGVyLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTKS4KICovCmZ1bmN0aW9uIGJzcF9idWlsZF9sb2NhdGlvbl9zY2hlbWEoJHNsdWcpIHsKICAgIC8vIFBBVEhfQV9XUE9QVElPTlNfQVBSMjggLSByZWFkIHdwX29wdGlvbnMgZmlyc3QsICRCU1BfTE9DQVRJT05TIGxpdGVyYWwgYXMgZmFsbGJhY2sgKEFwciAyOCBzZXNzaW9uIDQgTDIuMSBQYXRoIElJKQogICAgJGxvYyA9IG51bGw7CiAgICAkYnJpZWZfanNvbiA9IGdldF9vcHRpb24oJ2JzcF9sb2NhdGlvbl9icmllZl8nIC4gJHNsdWcsIG51bGwpOwogICAgaWYgKCRicmllZl9qc29uICE9PSBudWxsKSB7CiAgICAgICAgJGRlY29kZWQgPSBqc29uX2RlY29kZSgkYnJpZWZfanNvbiwgdHJ1ZSk7CiAgICAgICAgaWYgKGlzX2FycmF5KCRkZWNvZGVkKSAmJiBpc3NldCgkZGVjb2RlZFsnY2l0eV9uYW1lJ10pKSB7CiAgICAgICAgICAgICRsb2MgPSAkZGVjb2RlZDsKICAgICAgICB9CiAgICB9CiAgICBpZiAoJGxvYyA9PT0gbnVsbCkgewogICAgICAgIGdsb2JhbCAkQlNQX0xPQ0FUSU9OUzsKICAgICAgICBpZiAoIWlzc2V0KCRCU1BfTE9DQVRJT05TWyRzbHVnXSkpIHJldHVybiBudWxsOwogICAgICAgICRsb2MgPSAkQlNQX0xPQ0FUSU9OU1skc2x1Z107CiAgICB9CgogICAgJGFyZWFfc2VydmVkID0gW1snQHR5cGUnID0+ICdDaXR5JywgJ25hbWUnID0+ICRsb2NbJ2NpdHlfbmFtZSddXV07CiAgICBmb3JlYWNoICgoJGxvY1snbmVpZ2hib3Job29kcyddID8/IFtdKSBhcyAkbmJyKSB7CiAgICAgICAgJGFyZWFfc2VydmVkW10gPSBbJ0B0eXBlJyA9PiAnUGxhY2UnLCAnbmFtZScgPT4gJG5iciAuICcsICcgLiAkbG9jWydjaXR5X25hbWUnXV07CiAgICB9CiAgICBmb3JlYWNoICgoJGxvY1snbmVhcmJ5X2NpdGllcyddID8/IFtdKSBhcyAkbmMpIHsKICAgICAgICAkYXJlYV9zZXJ2ZWRbXSA9IFsnQHR5cGUnID0+ICdDaXR5JywgJ25hbWUnID0+ICRuY1snbmFtZSddXTsKICAgIH0KCiAgICAkZmFxX21haW5fZW50aXR5ID0gW107CiAgICBmb3JlYWNoICgoJGxvY1snZmFxJ10gPz8gW10pIGFzICRmKSB7CiAgICAgICAgJGZhcV9tYWluX2VudGl0eVtdID0gWwogICAgICAgICAgICAnQHR5cGUnID0+ICdRdWVzdGlvbicsCiAgICAgICAgICAgICduYW1lJyA9PiAkZlsncSddLAogICAgICAgICAgICAnYWNjZXB0ZWRBbnN3ZXInID0+IFsnQHR5cGUnID0+ICdBbnN3ZXInLCAndGV4dCcgPT4gJGZbJ2EnXV0KICAgICAgICBdOwogICAgfQoKICAgICRzY2hlbWEgPSBbCiAgICAgICAgJ0Bjb250ZXh0JyA9PiAnaHR0cHM6Ly9zY2hlbWEub3JnJywKICAgICAgICAnQGdyYXBoJyA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdAdHlwZScgPT4gWydMb2NhbEJ1c2luZXNzJywgJ1BsdW1iZXInXSwKICAgICAgICAgICAgICAgICdAaWQnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vcGx1bWJlci1pbi0nIC4gJHNsdWcgLiAnLyNidXNpbmVzcycsCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0JyaWdodCBTaWRlIFBsdW1iaW5nJywKICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ0xpY2Vuc2VkIGluc3VyZWQgcGx1bWJlciBzZXJ2aW5nICcgLiAkbG9jWydjaXR5X25hbWUnXSAuICcgc2luY2UgdGhlIDE5MjBzLicsCiAgICAgICAgICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3BsdW1iZXItaW4tJyAuICRzbHVnIC4gJy8nLAogICAgICAgICAgICAgICAgJ3RlbGVwaG9uZScgPT4gJysxLTkxMy05NjMtMTAyOScsCiAgICAgICAgICAgICAgICAncHJpY2VSYW5nZScgPT4gJyQkJywKICAgICAgICAgICAgICAgICdhZGRyZXNzJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnUG9zdGFsQWRkcmVzcycsCiAgICAgICAgICAgICAgICAgICAgJ3N0cmVldEFkZHJlc3MnID0+ICcxMjAyMiBCbHVlIFZhbGxleSBQa3d5JywKICAgICAgICAgICAgICAgICAgICAnYWRkcmVzc0xvY2FsaXR5JyA9PiAnT3ZlcmxhbmQgUGFyaycsCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NSZWdpb24nID0+ICdLUycsCiAgICAgICAgICAgICAgICAgICAgJ3Bvc3RhbENvZGUnID0+ICc2NjIxMycsCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NDb3VudHJ5JyA9PiAnVVMnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2FyZWFTZXJ2ZWQnID0+ICRhcmVhX3NlcnZlZCwKICAgICAgICAgICAgICAgICdhZ2dyZWdhdGVSYXRpbmcnID0+IFsKICAgICAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdBZ2dyZWdhdGVSYXRpbmcnLAogICAgICAgICAgICAgICAgICAgICdyYXRpbmdWYWx1ZScgPT4gJzQuOScsCiAgICAgICAgICAgICAgICAgICAgJ3Jldmlld0NvdW50JyA9PiAnMzg0JwogICAgICAgICAgICAgICAgXQogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdGQVFQYWdlJywKICAgICAgICAgICAgICAgICdAaWQnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vcGx1bWJlci1pbi0nIC4gJHNsdWcgLiAnLyNmYXEnLAogICAgICAgICAgICAgICAgJ21haW5FbnRpdHknID0+ICRmYXFfbWFpbl9lbnRpdHkKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnQnJlYWRjcnVtYkxpc3QnLAogICAgICAgICAgICAgICAgJ2l0ZW1MaXN0RWxlbWVudCcgPT4gWwogICAgICAgICAgICAgICAgICAgIFsnQHR5cGUnID0+ICdMaXN0SXRlbScsICdwb3NpdGlvbicgPT4gMSwgJ25hbWUnID0+ICdIb21lJywKICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0nID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vJ10sCiAgICAgICAgICAgICAgICAgICAgWydAdHlwZScgPT4gJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJyA9PiAyLAogICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1BsdW1iZXIgaW4gJyAuICRsb2NbJ2NpdHlfbmFtZSddLAogICAgICAgICAgICAgICAgICAgICAnaXRlbScgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9wbHVtYmVyLWluLScgLiAkc2x1ZyAuICcvJ10KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgXQogICAgICAgIF0KICAgIF07CiAgICByZXR1cm4gd3BfanNvbl9lbmNvZGUoJHNjaGVtYSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyk7Cn0KCi8qKiB3cF9oZWFkIHByaW9yaXR5IDk5OSDigJQgaW5qZWN0IHNjaGVtYSBmb3IgbG9jYXRpb24gcGFnZSBwb3N0X2lkcyBvbmx5LiAqLwphZGRfYWN0aW9uKCd3cF9oZWFkJywgJ2JzcF9sb2NhdGlvbl9zY2hlbWFfaW5qZWN0JywgOTk5KTsKZnVuY3Rpb24gYnNwX2xvY2F0aW9uX3NjaGVtYV9pbmplY3QoKSB7CiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JyaWNrc19pc19idWlsZGVyX21haW4nKSAmJiBicmlja3NfaXNfYnVpbGRlcl9tYWluKCkpIHJldHVybjsKICAgICRsb2NhdGlvbl9waWRzID0gWzI1OCwgMjg1LCAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDVdOwogICAgaWYgKCFpc19zaW5ndWxhcigpIHx8ICFpbl9hcnJheShnZXRfdGhlX0lEKCksICRsb2NhdGlvbl9waWRzLCB0cnVlKSkgcmV0dXJuOwogICAgLy8gU0xVR19GSVhfQVBSMjcg4oCUIFdQIHBvc3RfbmFtZSBpcyAicGx1bWJlci1pbi08Y2l0eT4iIGJ1dCAkQlNQX0xPQ0FUSU9OUyBrZXllZCBieSBjaXR5IHNsdWcgb25seQogICAgJHNsdWcgPSBnZXRfcG9zdF9maWVsZCgncG9zdF9uYW1lJywgZ2V0X3RoZV9JRCgpKTsKICAgICRzbHVnID0gc3RyX3JlcGxhY2UoJ3BsdW1iZXItaW4tJywgJycsICRzbHVnKTsKICAgICRzY2hlbWEgPSBic3BfYnVpbGRfbG9jYXRpb25fc2NoZW1hKCRzbHVnKTsKICAgIGlmICgkc2NoZW1hKSB7CiAgICAgICAgZWNobyAiXG48c2NyaXB0IHR5cGU9XCJhcHBsaWNhdGlvbi9sZCtqc29uXCI+IiAuICRzY2hlbWEgLiAiPC9zY3JpcHQ+XG4iOwogICAgfQp9CgovKiogQlNQX0xPQ0FUSU9OX1NUWUxFU19BUFIyOCDigJQgUGF0aCDOsy0xIENTUyBwb3J0IGZyb20gU25pcHBldCAjMTE1IChBcHIgMjggc2Vzc2lvbiA0IEwzLjEpLgogKiBSZXBsYWNlcyBib2R5LnBhZ2UtaWQtMjU4IHNlbGVjdG9ycyB3aXRoIDE1LXBpZCBQSFAtbGV2ZWwgZ2F0ZSAod3BfaGVhZCBwcmlvcml0eSAxMDAwKS4KICogU25pcHBldCAjMTE1IGRlYWN0aXZhdGlvbiBzY2hlZHVsZWQgcG9zdC0zLjEuNyB2aXN1YWwgcmVncmVzc2lvbiBwYXNzLgogKi8KYWRkX2FjdGlvbignd3BfaGVhZCcsICdic3BfbG9jYXRpb25fc3R5bGVzX2luamVjdCcsIDEwMDApOwpmdW5jdGlvbiBic3BfbG9jYXRpb25fc3R5bGVzX2luamVjdCgpIHsKICAgIGlmIChpc19hZG1pbigpIHx8IHdwX2RvaW5nX2FqYXgoKSB8fCAoZGVmaW5lZCgnUkVTVF9SRVFVRVNUJykgJiYgUkVTVF9SRVFVRVNUKSkgcmV0dXJuOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOwogICAgJGxvY2F0aW9uX3BpZHMgPSBbMjU4LCAyODUsIDI5MywgMjk0LCAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNV07CiAgICBpZiAoIWlzX3Npbmd1bGFyKCkgfHwgIWluX2FycmF5KGdldF90aGVfSUQoKSwgJGxvY2F0aW9uX3BpZHMsIHRydWUpKSByZXR1cm47CiAgICBlY2hvICJcbjxzdHlsZSBpZD1cImJzcC1sb2NhdGlvbi1zdHlsZXNcIj5cbiI7CiAgICBlY2hvIDw8PCdCU1BMT0NDU1NfQVBSMjhfSEVSRURPQ19FTkQnCi8qIExPQ0FUSU9OX1NUWUxFU19PUF9OQU1FX1NDUlVCX0FQUjI4IOKAlCBMMy4xIGxvY2F0aW9uIHN0eWxlcyBwb3J0IChBcHIgMjggc2Vzc2lvbiA0KS4KICAgU291cmNlOiBTbmlwcGV0ICMxMTUgQ1NTIGJvZHksIGJvZHkucGFnZS1pZC0yNTggcHJlZml4IGRyb3BwZWQsIHdwX2hlYWQgcHJpb3JpdHkgMTAwMCArIDE1LXBpZCBQSFAgZ2F0ZS4KICAgSGVhZGVyIGNvbW1lbnQgc2NydWJiZWQgdG8gcmVtb3ZlIG5vbi1IUSBsaXRlcmFsIHRoYXQgdHJpZ2dlcmVkIDE2OC1jaGVjayBEMyByZWdyZXNzaW9uLiAqLwoKLyogPT09PSBHbG9iYWwgcGFnZSBjb250YWluZXIgPT09PSAqLwojYnJ4LWNvbnRlbnQgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgb3ZlcmZsb3cteDogaGlkZGVuICFpbXBvcnRhbnQ7IH0KCi8qID09PT0gSGVybyBzZWN0aW9uIChvcDAwMWgpID09PT0gKi8KI2JyeGUtb3AwMDFoewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogNjBweCAyMHB4IDgwcHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDE5MCwyMzAsMjQ1LDAuMTUpIDAlLCByZ2JhKDI1NSwyNTUsMjU1LDApIDYwJSkgIWltcG9ydGFudDsKICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgcm93LWdhcDogMjBweCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDAxaCA+IC5icnhlLWltYWdlewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogIG1heC13aWR0aDogMTI0MHB4ICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBoZWlnaHQ6IDQ0MHB4ICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1pbWFnZSBpbWd7CiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IGluc2V0OiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiAxNnB4ICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KLyogQXZhaWxhYmlsaXR5IGNoaXAg4oCUIGdyZWVuIHBpbGwgKi8KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6Zmlyc3Qtb2YtdHlwZXsKICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6ICNEQ0ZDRTcgIWltcG9ydGFudDsKICBjb2xvcjogIzE2NjUzNCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDZweCAxNnB4ICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOTk5cHggIWltcG9ydGFudDsKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgIzIyQzU1RSAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDAxaCA+IC5icnhlLWJsb2NrOmZpcnN0LW9mLXR5cGUgPiAqewogIGNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7IGZvbnQ6IGluaGVyaXQgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50Owp9Ci8qIEhlcm8gSDEgKi8KI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZ3sKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsKICBmb250LXNpemU6IGNsYW1wKDI4cHgsIDR2dywgNDhweCkgIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDogMS4xICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsKICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICBtYXgtd2lkdGg6IDkwMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7Cn0KLyogSGVybyBzdWJ0aXRsZSAqLwojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS10ZXh0LWJhc2ljewogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7IGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IG1heC13aWR0aDogNzgwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKfQovKiBIZXJvIENUQSByb3cgKi8KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlewogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIGdhcDogMTJweCAhaW1wb3J0YW50OyBtYXJnaW4tdG9wOiA4cHggIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbnsKICBwYWRkaW5nOiAxNHB4IDI0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czogOHB4ICFpbXBvcnRhbnQ7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICBib3JkZXI6IDAgIWltcG9ydGFudDsgbWluLWhlaWdodDogNTJweCAhaW1wb3J0YW50OwogIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbnsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZSwgYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2UgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbjpudGgtb2YtdHlwZSgxKXsKICBiYWNrZ3JvdW5kOiAjMzBDNUZGICFpbXBvcnRhbnQ7IGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b246bnRoLW9mLXR5cGUoMSk6aG92ZXIsCiNicnhlLW9wMDAxaCA+IC5icnhlLWJsb2NrOmxhc3Qtb2YtdHlwZSBhLmJyeGUtYnV0dG9uOm50aC1vZi10eXBlKDEpOmZvY3VzewogIGJhY2tncm91bmQ6ICMxRkIzRUQgIWltcG9ydGFudDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDI5LDIzLDk2LDAuMTUpICFpbXBvcnRhbnQ7IG91dGxpbmU6IDJweCBzb2xpZCAjMUQxNzYwICFpbXBvcnRhbnQ7IG91dGxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbjpudGgtb2YtdHlwZSgyKXsKICBiYWNrZ3JvdW5kOiAjMUQxNzYwICFpbXBvcnRhbnQ7IGNvbG9yOiAjRjVGNUY1ICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b246bnRoLW9mLXR5cGUoMik6aG92ZXIsCiNicnhlLW9wMDAxaCA+IC5icnhlLWJsb2NrOmxhc3Qtb2YtdHlwZSBhLmJyeGUtYnV0dG9uOm50aC1vZi10eXBlKDIpOmZvY3VzewogIGJhY2tncm91bmQ6ICMyRDIzN0YgIWltcG9ydGFudDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDI5LDIzLDk2LDAuMjUpICFpbXBvcnRhbnQ7IG91dGxpbmU6IDJweCBzb2xpZCAjMzBDNUZGICFpbXBvcnRhbnQ7IG91dGxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbjpudGgtb2YtdHlwZSgzKXsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OwogIGJvcmRlcjogMnB4IHNvbGlkICMxRDE3NjAgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbjpudGgtb2YtdHlwZSgzKTpob3ZlciwKI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b246bnRoLW9mLXR5cGUoMyk6Zm9jdXN7CiAgYmFja2dyb3VuZDogIzFEMTc2MCAhaW1wb3J0YW50OyBjb2xvcjogI0Y1RjVGNSAhaW1wb3J0YW50OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KSAhaW1wb3J0YW50OyBvdXRsaW5lOiAycHggc29saWQgIzMwQzVGRiAhaW1wb3J0YW50OyBvdXRsaW5lLW9mZnNldDogMnB4ICFpbXBvcnRhbnQ7Cn0KCi8qID09PT0gVHJ1c3QgY2hpcHMgcm93IChvcDAxMXQpID09PT0gKi8KI2JyeGUtb3AwMTF0eyBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTI0MHB4ICFpbXBvcnRhbnQ7IH0KI2JyeGUtb3AwMTF0ID4gLmJyeGUtYmxvY2t7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDE2cHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiAjRkZGRkZGICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjRTJFOEYwICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMTF0ID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS10ZXh0LWJhc2ljewogIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICBwYWRkaW5nOiA4cHggMTRweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiAjRjhGQUZDICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOTk5cHggIWltcG9ydGFudDsgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50OyBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OyB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7Cn0KCi8qID09PT0gTWFwICsgVHJ1c3Qgc2lkZWJhciAob3AwMTltKSA9PT09ICovCiNicnhlLW9wMDE5bXsgcGFkZGluZzogNjBweCAyMHB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTI4MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IH0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2t7CiAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDM2MHB4ICFpbXBvcnRhbnQ7CiAgZ2FwOiA0MHB4ICFpbXBvcnRhbnQ7IGFsaWduLWl0ZW1zOiBzdGFydCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgxKXsKICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgZ2FwOiAxNnB4ICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgxKSAuYnJ4ZS1jb2RlewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OyBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogMTJweCAhaW1wb3J0YW50OyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogIGFzcGVjdC1yYXRpbzogMTYvMTAgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2NrOm50aC1vZi10eXBlKDEpIC5icnhlLWNvZGUgaWZyYW1lewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyBpbnNldDogMCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgxKSA+IC5icnhlLXRleHQtYmFzaWN7CiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiAjNDc1NTY5ICFpbXBvcnRhbnQ7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKfQovKiBSaWdodCBzaWRlYmFyIOKAlCB0cnVzdCBjaGlwcyBzdGFja2VkICovCiNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrID4gLmJyeGUtYmxvY2s6bnRoLW9mLXR5cGUoMil7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IGdhcDogMTJweCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrID4gLmJyeGUtYmxvY2s6bnRoLW9mLXR5cGUoMikgPiAuYnJ4ZS10ZXh0LWJhc2ljewogIHBhZGRpbmc6IDEycHggMTZweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiAjRjhGQUZDICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOHB4ICFpbXBvcnRhbnQ7IGJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjAgIWltcG9ydGFudDsKICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50OwogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Owp9CgovKiA9PT09IFNlcnZpY2VzIChvcDAzMXMpID09PT0gKi8KI2JyeGUtb3AwMzFzeyBwYWRkaW5nOiA2MHB4IDIwcHggIWltcG9ydGFudDsgbWF4LXdpZHRoOiAxMjgwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgcm93LWdhcDogMzBweCAhaW1wb3J0YW50OyB9CiNicnhlLW9wMDMxcyA+IGgyLmJyeGUtaGVhZGluZ3sKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAzMnB4ICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAzMXMgPiBwLmJyeGUtdGV4dC1iYXNpY3sKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6IDEuNiAhaW1wb3J0YW50OwogIG1heC13aWR0aDogOTYwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMzFzID4gLmJyeGUtYmxvY2t7CiAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikgIWltcG9ydGFudDsKICBnYXA6IDI0cHggIWltcG9ydGFudDsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAzMXMgPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2NrewogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMjhweCAyMHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6ICNGOEZBRkMgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiAxMnB4ICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDMxcyAuYnJ4ZS1pbWFnZXsgbWF4LXdpZHRoOiA4MHB4ICFpbXBvcnRhbnQ7IH0KI2JyeGUtb3AwMzFzIC5icnhlLWltYWdlIGltZ3sgd2lkdGg6IDgwcHggIWltcG9ydGFudDsgaGVpZ2h0OiA4MHB4ICFpbXBvcnRhbnQ7IG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsgfQojYnJ4ZS1vcDAzMXMgaDMuYnJ4ZS1oZWFkaW5newogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDIwcHggIWltcG9ydGFudDsKICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDAzMXMgLmJyeGUtYmxvY2sgcC5icnhlLXRleHQtYmFzaWN7CiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMzFzIGEuYnJ4ZS1idXR0b257CiAgY29sb3I6ICMzMEM1RkYgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDRweCAwICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIG1hcmdpbi10b3A6IDhweCAhaW1wb3J0YW50OyBib3JkZXI6IDAgIWltcG9ydGFudDsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwMzFzIGEuYnJ4ZS1idXR0b246aG92ZXIsCiNicnhlLW9wMDMxcyBhLmJyeGUtYnV0dG9uOmZvY3VzewogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7CiAgb3V0bGluZTogMnB4IHNvbGlkICMzMEM1RkYgIWltcG9ydGFudDsgb3V0bGluZS1vZmZzZXQ6IDJweCAhaW1wb3J0YW50Owp9CgovKiA9PT09IFJldmlld3MgKG9wMDY1cikgPT09PSAqLwojYnJ4ZS1vcDA2NXJ7IHBhZGRpbmc6IDYwcHggMjBweCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6IDEyODBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OyB9CiNicnhlLW9wMDY1ciA+IGgyLmJyeGUtaGVhZGluZ3sKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAzMnB4ICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206IDI0cHggIWltcG9ydGFudDsKfQojYnJ4ZS1vcDA2NXIgPiAuYnJ4ZS1ibG9ja3sKICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikgIWltcG9ydGFudDsKICBnYXA6IDIwcHggIWltcG9ydGFudDsKfQojYnJ4ZS1vcDA2NXIgPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2NrewogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIGdhcDogOHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDI0cHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiAjRkZGRkZGICFpbXBvcnRhbnQ7IGJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjAgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiAxMnB4ICFpbXBvcnRhbnQ7IG1pbi1oZWlnaHQ6IDE4MHB4ICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwNjVyIC5icnhlLXRleHQtYmFzaWM6bnRoLWNoaWxkKDEpewogIGNvbG9yOiAjRjU5RTBCICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDA2NXIgLmJyeGUtdGV4dC1iYXNpYzpudGgtY2hpbGQoMil7CiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgZm9udC1zaXplOiAxNXB4ICFpbXBvcnRhbnQ7CiAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50OyBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDY1ciAuYnJ4ZS10ZXh0LWJhc2ljOm50aC1jaGlsZCgzKXsKICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKfQojYnJ4ZS1vcDA2NXIgLmJyeGUtdGV4dC1iYXNpYzpudGgtY2hpbGQoNCl7CiAgY29sb3I6ICMzMEM1RkYgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDsKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Owp9CgovKiA9PT09IEhvdyBJdCBXb3JrcyAob3AwODNoKSA9PT09ICovCiNicnhlLW9wMDgzaHsgcGFkZGluZzogNjBweCAyMHB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTI4MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IHJvdy1nYXA6IDEwcHggIWltcG9ydGFudDsgfQojYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmd7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50OwogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDgzaCA+IC5icnhlLWltYWdleyBtYXgtd2lkdGg6IDI2MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvIDI0cHggIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQojYnJ4ZS1vcDA4M2ggPiAuYnJ4ZS1pbWFnZSBpbWd7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogYXV0byAhaW1wb3J0YW50OyB9CiNicnhlLW9wMDgzaCA+IC5icnhlLWJsb2NrewogIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKSAhaW1wb3J0YW50OwogIGdhcDogMjRweCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDgzaCA+IC5icnhlLWJsb2NrID4gLmJyeGUtYmxvY2t7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyBnYXA6IDEycHggIWltcG9ydGFudDsKICBwYWRkaW5nOiAyOHB4IDIwcHggIWltcG9ydGFudDsgYmFja2dyb3VuZDogI0Y1RjVGNSAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwODNoIC5icnhlLWltYWdleyBtYXgtd2lkdGg6IDcwcHggIWltcG9ydGFudDsgfQojYnJ4ZS1vcDA4M2ggLmJyeGUtaW1hZ2UgaW1neyB3aWR0aDogNzBweCAhaW1wb3J0YW50OyBoZWlnaHQ6IDcwcHggIWltcG9ydGFudDsgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OyB9CiNicnhlLW9wMDgzaCBoMy5icnhlLWhlYWRpbmd7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50OwogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDgzaCAuYnJ4ZS1ibG9jayBwLmJyeGUtdGV4dC1iYXNpY3sKICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgd2hpdGUtc3BhY2U6IHByZS1saW5lICFpbXBvcnRhbnQ7Cn0KCi8qID09PT0gTmVpZ2hib3Job29kcyAob3AwOTluKSA9PT09ICovCiNicnhlLW9wMDk5bnsgcGFkZGluZzogNjBweCAyMHB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTI4MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IHJvdy1nYXA6IDE4cHggIWltcG9ydGFudDsgfQojYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmd7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50OwogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Owp9CiNicnhlLW9wMDk5biA+IHAuYnJ4ZS10ZXh0LWJhc2ljewogIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsKICBtYXgtd2lkdGg6IDkwMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AwOTluID4gLmJyeGUtYmxvY2t7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyBnYXA6IDEwcHggIWltcG9ydGFudDsKfQojYnJ4ZS1vcDA5OW4gPiAuYnJ4ZS1ibG9jayA+IC5icnhlLXRleHQtYmFzaWN7CiAgcGFkZGluZzogOHB4IDE2cHggIWltcG9ydGFudDsgYmFja2dyb3VuZDogI0YxRjVGOSAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDk5OXB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsKICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50Owp9CgovKiA9PT09IExhbmRtYXJrcyAob3AxMTNsKSA9PT09ICovCiNicnhlLW9wMTEzbHsgcGFkZGluZzogNTBweCAyMHB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTEwMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IH0KI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5newogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDMycHggIWltcG9ydGFudDsKICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogMTZweCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMTEzbCA+IHAuYnJ4ZS10ZXh0LWJhc2ljewogIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsKICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDogMS42ICFpbXBvcnRhbnQ7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsgbWF4LXdpZHRoOiA5MDBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50Owp9CgovKiA9PT09IEZBUSAob3AxMTZmKSBuYXZ5IGJnID09PT0gKi8KI2JyeGUtb3AxMTZmewogIGJhY2tncm91bmQ6ICMxRDE3NjAgIWltcG9ydGFudDsKICBwYWRkaW5nOiA2MHB4IDIwcHggIWltcG9ydGFudDsgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyByb3ctZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AxMTZmID4gaDIuYnJ4ZS1oZWFkaW5newogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDMycHggIWltcG9ydGFudDsKICBjb2xvcjogI0ZGRkZGRiAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQojYnJ4ZS1vcDExNmYgPiAuYnJ4ZS1pbWFnZXsgbWF4LXdpZHRoOiAyNjBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OyB9CiNicnhlLW9wMTE2ZiA+IC5icnhlLWltYWdlIGltZ3sgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH0KI2JyeGUtb3AxMTZmID4gLmJyeGUtYmxvY2t7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgZ2FwOiAxNnB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTEwMHB4ICFpbXBvcnRhbnQ7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AxMTZmID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9ja3sKICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDYpICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDIwcHggMjRweCAhaW1wb3J0YW50OwogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyBnYXA6IDhweCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMTE2ZiBoMy5icnhlLWhlYWRpbmd7CiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50OwogIGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMTE2ZiBwLmJyeGUtdGV4dC1iYXNpY3sKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50OyBjb2xvcjogI0ZGRkZGRiAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiAxLjU1ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OwogIG9wYWNpdHk6IDAuOTIgIWltcG9ydGFudDsKfQoKLyogPT09PSBOZWFyYnkgY2l0aWVzIChvcDEzOG4pID09PT0gKi8KI2JyeGUtb3AxMzhueyBwYWRkaW5nOiA1MHB4IDIwcHggIWltcG9ydGFudDsgbWF4LXdpZHRoOiAxMjgwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgcm93LWdhcDogMjBweCAhaW1wb3J0YW50OyB9CiNicnhlLW9wMTM4biA+IGgzLmJyeGUtaGVhZGluZ3sKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAyMnB4ICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AxMzhuID4gLmJyeGUtYmxvY2t7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyBnYXA6IDEycHggIWltcG9ydGFudDsKfQojYnJ4ZS1vcDEzOG4gPiAuYnJ4ZS1ibG9jayA+IGEuYnJ4ZS1idXR0b257CiAgcGFkZGluZzogMTBweCAxOHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6ICNGMUY1RjkgIWltcG9ydGFudDsKICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiA5OTlweCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OyBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIGJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjAgIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50Owp9CiNicnhlLW9wMTM4biA+IC5icnhlLWJsb2NrID4gYS5icnhlLWJ1dHRvbnsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlICFpbXBvcnRhbnQ7Cn0KI2JyeGUtb3AxMzhuID4gLmJyeGUtYmxvY2sgPiBhLmJyeGUtYnV0dG9uOmhvdmVyLAojYnJ4ZS1vcDEzOG4gPiAuYnJ4ZS1ibG9jayA+IGEuYnJ4ZS1idXR0b246Zm9jdXN7CiAgYmFja2dyb3VuZDogI0UyRThGMCAhaW1wb3J0YW50OyBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OwogIGJvcmRlci1jb2xvcjogIzMwQzVGRiAhaW1wb3J0YW50OyBvdXRsaW5lOiAycHggc29saWQgIzMwQzVGRiAhaW1wb3J0YW50OyBvdXRsaW5lLW9mZnNldDogMnB4ICFpbXBvcnRhbnQ7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBSRVNQT05TSVZFCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKLyogVGFibGV0IDEwMjQgZG93biDigJQgc2VydmljZXMgMi1jb2wsIHN0ZXBzIHN0YWNrZWQsIG1hcCBzdGFja2VkICovCkBtZWRpYSAobWF4LXdpZHRoOiAxMDIzcHgpewogICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICB9CiAgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgyKXsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAjYnJ4ZS1vcDAzMXMgPiAuYnJ4ZS1ibG9jaywKICAjYnJ4ZS1vcDA4M2ggPiAuYnJ4ZS1ibG9jaywKICAjYnJ4ZS1vcDA2NXIgPiAuYnJ4ZS1ibG9ja3sKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikgIWltcG9ydGFudDsKICB9Cn0KCi8qIE1vYmlsZSA3NjcgZG93biDigJQgYWxsIHNpbmdsZSBjb2x1bW4gKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KXsKICAjYnJ4ZS1vcDAzMXMgPiAuYnJ4ZS1ibG9jaywKICAjYnJ4ZS1vcDA4M2ggPiAuYnJ4ZS1ibG9jaywKICAjYnJ4ZS1vcDA2NXIgPiAuYnJ4ZS1ibG9ja3sKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgfQogICNicnhlLW9wMDAxaHsgcGFkZGluZzogNDBweCAxNnB4IDYwcHggIWltcG9ydGFudDsgfQogICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmd7CiAgICBmb250LXNpemU6IDMycHggIWltcG9ydGFudDsKICB9CiAgI2JyeGUtb3AwMDFoID4gLmJyeGUtdGV4dC1iYXNpY3sgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7IH0KICAjYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbnsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMzYwcHggIWltcG9ydGFudDsKICB9CiAgI2JyeGUtb3AxMTZmeyBwYWRkaW5nOiA0MHB4IDE2cHggIWltcG9ydGFudDsgfQogICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrID4gLmJyeGUtYmxvY2s6bnRoLW9mLXR5cGUoMSkgLmJyeGUtY29kZXsKICAgIGFzcGVjdC1yYXRpbzogNC8zICFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTJweCAhaW1wb3J0YW50OwogIH0KICAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2NrOm50aC1vZi10eXBlKDEpIC5icnhlLWNvZGUgaWZyYW1lewogICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IGluc2V0OiAwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICB9CiAgI2JyeGUtb3AwMDFoID4gLmJyeGUtaW1hZ2V7IGhlaWdodDogMjgwcHggIWltcG9ydGFudDsgfQp9CgovKiBCU1BfQVBSMjhfV0lEVEhfT1ZFUlJJREVfUEVSX0RPQ19MSU5FXzEzNjUg4oCUIGNvZGViYXNlIGRvYyB2ZXJiYXRpbToKICAgImJzcC1wYWdlLWNzcy04IHNldHMgZml4ZWQgcHggd2lkdGhzICgxMTQwcHgsIDEzNDRweCBldGMpLiBPbiBtb2JpbGUgdGhlc2UKICAgIG92ZXJmbG93LiBGaXg6IGJsYW5rZXQgW2lkXj1icnhlLV0geyB3aWR0aDogMTAwJSB9IGluIG1lZGlhIHF1ZXJ5LiIKICAgUmVmZXJlbmNlIGltcGw6IGZ1bmN0aW9ucy5waHAgbGluZSAzNjAgKHBhZ2UgOCkuIEFwcGxpZWQgdG8gMTUgbG9jYXRpb24gUElEcwogICBwZXIgwqcxNSBCU1AgUGFnZSBOIENTUyBNaXJyb3IuIEFwciAxNyBhcHBlbmQgcnVsZSBob25vcmVkIChuZXcgQG1lZGlhIGF0IGVuZCkuICovCgpAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpewogIGJvZHkucGFnZS1pZC0yNTggW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTI4NSBbaWRePSJicnhlLSJdLAogIGJvZHkucGFnZS1pZC0yOTMgW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTI5NCBbaWRePSJicnhlLSJdLCBib2R5LnBhZ2UtaWQtMjk1IFtpZF49ImJyeGUtIl0sCiAgYm9keS5wYWdlLWlkLTI5NiBbaWRePSJicnhlLSJdLCBib2R5LnBhZ2UtaWQtMjk3IFtpZF49ImJyeGUtIl0sIGJvZHkucGFnZS1pZC0yOTggW2lkXj0iYnJ4ZS0iXSwKICBib2R5LnBhZ2UtaWQtMjk5IFtpZF49ImJyeGUtIl0sIGJvZHkucGFnZS1pZC0zMDAgW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTMwMSBbaWRePSJicnhlLSJdLAogIGJvZHkucGFnZS1pZC0zMDIgW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTMwMyBbaWRePSJicnhlLSJdLCBib2R5LnBhZ2UtaWQtMzA0IFtpZF49ImJyeGUtIl0sCiAgYm9keS5wYWdlLWlkLTMwNSBbaWRePSJicnhlLSJdIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50OwogIH0KICBib2R5LnBhZ2UtaWQtMjU4IGltZywgYm9keS5wYWdlLWlkLTI4NSBpbWcsCiAgYm9keS5wYWdlLWlkLTI5MyBpbWcsIGJvZHkucGFnZS1pZC0yOTQgaW1nLCBib2R5LnBhZ2UtaWQtMjk1IGltZywKICBib2R5LnBhZ2UtaWQtMjk2IGltZywgYm9keS5wYWdlLWlkLTI5NyBpbWcsIGJvZHkucGFnZS1pZC0yOTggaW1nLAogIGJvZHkucGFnZS1pZC0yOTkgaW1nLCBib2R5LnBhZ2UtaWQtMzAwIGltZywgYm9keS5wYWdlLWlkLTMwMSBpbWcsCiAgYm9keS5wYWdlLWlkLTMwMiBpbWcsIGJvZHkucGFnZS1pZC0zMDMgaW1nLCBib2R5LnBhZ2UtaWQtMzA0IGltZywKICBib2R5LnBhZ2UtaWQtMzA1IGltZyB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfQp9CgoKLyogQlNQX0FQUjI4X09QMDAzSF9PVkFMX1JFTU9WRUQg4oCUIERJU0FCTEVEIDIwMjYtMDUtMDggKHYyNWIpIHBlciBDeWNsZSA0IGF2YWlsIGNoaXAgMy1zdGF0ZSBzaGlwLgogICBBcHIgMjgga2lsbGFsbCBzZXJ2ZWQgd2hlbiBjaGlwIHdhcyAnbG9uZyBvdmFsIHVuZGVyIHZhbicgcG9saXNoIHJlbW92YWwuCiAgIHYyNWEgcmUtaW50cm9kdWNlZCBjaGlwIHN0eWxpbmcgKHdoaXRlIHBpbGwsIG5hdnkgdGV4dCwgOjpiZWZvcmUgY29sb3JlZCBkb3QgcGVyIGRhdGEtc3RhdGUpCiAgIHBlciBSb2JlcnQrS2FsZW4gQXByIDIzIFNsYWNrIERNIE9wdGlvbiBDLiBLaWxsYWxsIG5vdyBibG9ja3MgbGVnaXRpbWF0ZSBzdHlsaW5nIOKAlCBkaXNhYmxlZC4KICAgUG9zdG1ldGEgYWxzbyBjbGVhbmVkIHRvIG1hdGNoICh3aGl0ZSBiZywgbmF2eSB0ZXh0LCBwaWxsIHJhZGl1cykuIERpYWdub3N0aWM6IDQtcHJvYmUgZm91bmQKICAga2lsbGFsbCBhdCAoMCwyLDIsMikgdGllZCB2MjVhIENTUyBidXQgbG9hZGVkIGxhdGVyIOKGkiB3b24gYmcvcGFkZGluZy9yYWRpdXMvYm9yZGVyIGJhdHRsZS4KICAgU2VlIE1IIGJzcC1tYXkwOC1jeWNsZTQtdjI1Yi1raWxsYWxsLWRpc2FibGUgKyBjb2RlYmFzZSDCpzg1LkNDLiAqLwoKCi8qIEJTUF9BUFIyOF9ESVJFQ1RJVkVfMV9GQVFfSDMg4oCUIEFwciAyNCBldmVuaW5nIERpcmVjdGl2ZSAxIHNwZWMuCiAgIFBlciBNSCBwb2xpc2gtY29uc29saWRhdGVkOiAiaDMganVzdGlmeTogZmxleC1zdGFydCBbd2FzIHNwYWNlLWJldHdlZW5dIiArICJoMyBnYXA6IDEwcHggW3dhcyAxNnB4XSIuCiAgIFRyaXBsZS1jbGFzcyBzcGVjICgwLDIsNSw0KSB0byBiZWF0IGV4dHJhY3RlZF8xNjYncyBkb3VibGVkLWNsYXNzICgwLDIsNCw0KSB3aGljaCBoYWQgcHJlLURpcmVjdGl2ZSB2YWx1ZXMuICovCgpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICBnYXA6IDEwcHggIWltcG9ydGFudDsKfQoKCi8qIEJTUF9BUFIyOF9MRUZUX0FMSUdOX0hFQURJTkdTIOKAlCBsZWZ0LWFsaWduIHNlY3Rpb24gSDIvSDMgaGVhZGluZ3MgdG8gbWF0Y2ggbWFwICsgY29udGVudCBwYXJhZ3JhcGhzLgogICBSb2JlcnQgZGlyZWN0aXZlOiAibGVmdCBhbGlnbm1lbnQgd2l0aCB0aGUgbWFwIi4gQXByIDI0IHBvbGlzaCBoYWQgaGVhZGluZ3MgY2VudGVyZWQ7CiAgIHRvZGF5IFJvYmVydCByZXF1ZXN0cyBsZWZ0LWFsaWduIGNvbnNpc3RlbmN5IHdpdGggYm9keSBjb250ZW50LiBUcmlwbGUtY2xhc3Mgc3BlYyB0byB3aW4gY2FzY2FkZS4gKi8KCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDA2NXIgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDExM2wgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDExNmYgPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcgewogIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgoKLyogQlNQX0FQUjI4X0hFUk9fTEVGVF9BTElHTiDigJQgZXh0ZW5kICJsZWZ0IGFsaWdubWVudCB3aXRoIHRoZSBtYXAiIHRvIEhlcm8gSDEgKyBzdWJ0aXRsZSAqLwpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLApodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljIHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKCi8qIEJTUF9BUFIyOF9PUDAyNE1fS0lMTEFMTF9QRVJfQVBSMjQg4oCUIERJU0FCTEVEIDIwMjYtMDUtMDggcGVyIFJvYmVydCBkaXJlY3RpdmUuCiAgIE9yaWdpbmFsIHB1cnBvc2U6IGhpZGUgb3AwMjRtIGR1cGxpY2F0ZSB0cnVzdC1jaGlwIHNpZGViYXIgKEFwciAyNCBlcmEgaGFkIG9wMDExdCBpbmxpbmUgKyBvcDAyNG0gc2lkZWJhciA9IGR1cGxpY2F0ZSkuCiAgIEF1ZHJleSA0MDMzOjI5OCBzcGVjaWZpZXMgdGhlIG9wMDI0bSBzaWRlYmFyIFNIT1VMRCBzaG93IDYgdHJ1c3QgY2hpcHMuCiAgIE1heSA4IGF1ZGl0OiBvcDAxMXQgbm8gbG9uZ2VyIGV4aXN0cyBpbiBwb3N0bWV0YSAtIGtpbGxhbGwgaXMgb2Jzb2xldGUuCiAgIFJlLWVuYWJsZSB3b3VsZCByZS1oaWRlIHRydXN0IGNoaXBzLiBGdWxsIGZvcmVuc2ljczogY29kZWJhc2UgU2VjdGlvbiA4NS5BQS4KKi8KCgovKiBCU1BfQVBSMjhfTUFQX0FTUEVDVF9SQVRJT19QRVJfQVBSMjQg4oCUIHJlc3RvcmUgQXByIDI0IGRvY3VtZW50ZWQgbWFwIGFzcGVjdC4KICAgU291cmNlOiBNSCBic3AtYXByMjQtb3AyNTgtaGVyby1vdmFsLXJlbW92ZWQtbWFwLXJlZmFjdG9yZWQtc2hpcHBlZC4KICAgQXByIDI0IHNwZWM6IDIxOjkgZGVza3RvcCAocGFub3JhbWljIGxldHRlcmJveCksIDQ6MyBtb2JpbGUuCiAgIEhpZ2hlciBzcGVjaWZpY2l0eSB0aGFuIHNuaXBwZXQgMTcxJ3MgLmJzcC1tYXAtZnJhbWUgKDAsMCwxLDApIOKAlCB1c2VzIDItSUQgY2hhaW4gKDAsMiwyLDIpLiAqLwoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSB7CiAgICBhc3BlY3QtcmF0aW86IDIxIC8gOSAhaW1wb3J0YW50OwogIH0KICBAc3VwcG9ydHMgbm90IChhc3BlY3QtcmF0aW86IDIxLzkpIHsKICAgIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUgewogICAgICBwYWRkaW5nLXRvcDogNDIuODU3JSAhaW1wb3J0YW50OyAvKiA5LzIxID0gMC40Mjg1NyAqLwogICAgfQogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsKICBodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lIHsKICAgIGFzcGVjdC1yYXRpbzogNCAvIDMgIWltcG9ydGFudDsKICB9CiAgQHN1cHBvcnRzIG5vdCAoYXNwZWN0LXJhdGlvOiA0LzMpIHsKICAgIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUgewogICAgICBwYWRkaW5nLXRvcDogNzUlICFpbXBvcnRhbnQ7CiAgICB9CiAgfQp9CgoKLyogQlNQX0FQUjI4X0FMSUdOX0VWRU5MWV9XSVRIX01BUCDigJQgUm9iZXJ0IGRpcmVjdGl2ZTogImxlZnQgYWxpZ24gaGVhZGVycyBuZWVkIHRvIGFjdHVhbGx5CiAgIGxlZnQgYWxnbiBldmVubHkgYWxvbmcgdGhlIG1hcCIuIEVtcGlyaWNhbCBQbGF5d3JpZ2h0IHByb2JlIGZvdW5kIDQgbWlzYWxpZ25tZW50czoKICAgLSBIZXJvIEgxICsgc3VidGl0bGUgYXQgdmlld3BvcnQgZWRnZSAoMHB4KSBpbnN0ZWFkIG9mIHNlY3Rpb24gcGFkZGluZyAoMjBtb2JpbGUvMTAwZGVza3RvcCkKICAgLSBGQVEgc2VjdGlvbiBwYWRkaW5nIDQwcHggMTZweCBvbiBtb2JpbGUgKHNob3VsZCBiZSA2MCAyMCkKICAgLSBOZWFyYnkgc2VjdGlvbiBwYWRkaW5nIDUwcHggMjBweCBtYWtpbmcgSDMgbGFuZCBhdCAxMjAgZGVza3RvcCAobmVlZCAxMDAgdG8gbWF0Y2ggbWFwKSAqLwoKLyogSGVybyBIMSArIHN1YnRpdGxlIOKAlCBtYXRjaCBzZWN0aW9uJ3MgMjBweCBjb250ZW50IGVkZ2UgKHdoaWNoIG1hdGNoZXMgbWFwIGxlZnQpICovCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMDFoID4gcC5icnhlLXRleHQtYmFzaWMgewogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgbWF4LXdpZHRoOiAxMjgwcHggIWltcG9ydGFudDsKICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogIHBhZGRpbmctbGVmdDogMjBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDIwcHggIWltcG9ydGFudDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7Cn0KCi8qIEZBUSBzZWN0aW9uIOKAlCBtYXRjaCBtYXAgMjBweCBwYWRkaW5nIG9uIG1vYmlsZSAod2FzIDE2cHgpICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDExNmYsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDExNmYgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7CiAgfQp9CgoKLyogQlNQX0FQUjI4X09QMTM4Tl9HUklEX1BFUl9BUFIyNCDigJQgTmVhcmJ5IGNpdGllcyBjaGlwIGxheW91dCBwZXIgQXByIDI0IE1ICiAgIGJzcC1hcHIyNC1vcDI1OC1vcDEzOC1vcDE0MC1tb2JpbGUtcmVzcG9uc2l2ZS1zaGlwcGVkICh2ZXJiYXRpbSAzLXRpZXIgcmVzcG9uc2l2ZSkuCiAgIFJvYmVydDogImNpdHkgcGlsbHMgbW9yZSBvZiBhIGdyaWQgcGF0dGVybiAvIDIgcm93cyIuCiAgIEFwciAyNCBzcGVjOgogICAgIERlc2t0b3A6IGZsZXgtd3JhcCB3cmFwLCBnYXAgMTBweCwgZm9udCAxM3B4LCBwYWRkaW5nIDhweCAxNnB4CiAgICAgVGFibGV0ICg8PTk5MSk6IGdhcCA4cHgsIGZvbnQgMTJweCwgcGFkZGluZyA2cHggMTJweAogICAgIFBob25lICAoPD00ODApOiAyLWNvbHVtbiBncmlkIHZpYSBmbGV4IDAgMSBjYWxjKDUwJSAtIDRweCksIGZvbnQgMTEuNSwgcGFkZGluZyA3cHggOHB4ICovCgovKiBEZXNrdG9wIGRlZmF1bHQgKi8KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiB7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICBnYXA6IDEwcHggIWltcG9ydGFudDsKfQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICBnYXA6IDZweCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDhweCAxNnB4ICFpbXBvcnRhbnQ7CiAgZmxleDogMCAwIGF1dG8gIWltcG9ydGFudDsKfQoKLyogVGFibGV0IOKJpDk5MXB4IOKAlCBBcHIgMjQgc3BlYyAqLwpAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsKICBodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIHsKICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7CiAgfQogIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24gewogICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiA2cHggMTJweCAhaW1wb3J0YW50OwogIH0KfQoKLyogUGhvbmUg4omkNDgwcHgg4oCUIDItY29sdW1uIGdyaWQgQXByIDI0IHZlcmJhdGltICovCkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewogIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gewogICAgZ2FwOiA2cHggIWltcG9ydGFudDsKICB9CiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiB7CiAgICBmbGV4OiAwIDEgY2FsYyg1MCUgLSA0cHgpICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDExLjVweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogN3B4IDhweCAhaW1wb3J0YW50OwogICAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KfQoKCi8qIEJTUF9BUFIyOF9PUDEwMk5fRk9SQ0VfR1JJRCDigJQgRElTQUJMRUQgMjAyNi0wNS0wOCAodjI2LjMpIHBlciBDeWNsZSA0IE5XUyBncmlkIHNoaXAuCiAgIHYyNi4yIGZpeGVkIE5XUyBncmlkIHZpYSAjYnJ4LWNvbnRlbnQgI2JyeGUtb3AwOTluICNicnhlLW9wMTAybiBpbiBzdHlsZS5jc3MgR1JPVVAgMTQuCiAgIFRoaXMgd3BfaGVhZCBlbWl0dGVyIGF0ICgwLDIsMywyKSBsb3NlcyBjYXNjYWRlIHRvIGJyaWNrcy1jaGlsZCBydWxlICgwLDMsMCwwKSDigJQgZGVhZCBjb2RlLgogICBEaXNhYmxlZCB0byByZWR1Y2Ugc3VyZmFjZSBhcmVhICsgc2ltcGxpZnkgY2FzY2FkZSByZWFzb25pbmcuCiAgIENpdGU6IMKnODUuREQgSUQtY291bnQgcHJpbWFjeSArIMKnODUuQUEga2lsbGFsbC1kaXNhYmxlIHBhdHRlcm4uICovCi8qIEJTUF9BUFIyOF9PUDAzNFNfRk9SQ0VfR1JJRCDigJQgZm9yY2Ugb3AwMzRzIGRpc3BsYXk6Z3JpZCBwZXIgQXByIDI0IHNwZWMuCiAgIFNvdXJjZTogZXh0cmFjdGVkXzE2Mi50eHQgU0VDVElPTiA0IHZlcmJhdGltICJodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzRzIHsKICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKSAhaW1wb3J0YW50OyB9IgogICBDdXJyZW50bHkgIzE0OCBzZXRzIGRpc3BsYXk6ZmxleCBhdCBzYW1lIHNwZWNpZmljaXR5ICgwLDEsMiwyKS4gVHJpcGxlLWNsYXNzIHdpbnMuICovCgpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzIHsKICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpICFpbXBvcnRhbnQ7CiAgZ3JpZC1hdXRvLXJvd3M6IDFmciAhaW1wb3J0YW50OwogIGdhcDogMjRweCAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBmbGV4LWRpcmVjdGlvbjogdW5zZXQgIWltcG9ydGFudDsKICBmbGV4LXdyYXA6IHVuc2V0ICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgewogIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICBncmlkLXRlbXBsYXRlLXJvd3M6IDE4MHB4IGF1dG8gYXV0byAxZnIgYXV0byAhaW1wb3J0YW50OwogIGp1c3RpZnktaXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBzdGFydCAhaW1wb3J0YW50OwogIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogIGZsZXgtZGlyZWN0aW9uOiB1bnNldCAhaW1wb3J0YW50OwogIGZsZXgtd3JhcDogdW5zZXQgIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7CiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cyB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSkgIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICB9Cn0KCgovKiBCU1BfQVBSMjhfTUFQX0ZVTExfV0lEVEhfQUZURVJfT1AwMjRNX0hJREUg4oCUIEFwciAyNCBkb2N1bWVudGVkIHNwZWMuCiAgIFNvdXJjZTogTUggYnNwLWFwcjI0LW9wMjU4LWhlcm8tb3ZhbC1yZW1vdmVkLW1hcC1yZWZhY3RvcmVkLXNoaXBwZWQgKHZlcmJhdGltKToKICAgIm1hcF93cmFwX3c6IDEyNDBweCAoZnVsbCBjb250ZW50IHdpZHRoKSIgKyAibWFwX2ZyYW1lX3cgeCBoOiAxMjQwIHggNTMxIHJhdGlvIDIxOjkiLgogICBXaGVuIG9wMDI0bSBzaWRlYmFyIGhpZGRlbiAoRml4ICM3KSwgZ3JpZCBtdXN0IGNvbGxhcHNlIGZyb20gIjFmciAzNjBweCIg4oaSICIxZnIiIHNvIG1hcCBmaWxscwogICB0aGUgZnVsbCAxMjQwcHggY29udGVudCB3aWR0aC4gVHJpcGxlLWNsYXNzIHNwZWMgdG8gYmVhdCAjMTQ4ICsgQXByIDI0IHBvbGlzaCBhdCAoMCwxLDIsMikuICovCgpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrIHsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogIGdhcDogMCAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1heC13aWR0aDogMTAyM3B4KSB7CiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jaywKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2ssCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jayB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogIH0KfQoKCi8qIEJTUF9BUFIyOF9ISVdfSDJfTUFUQ0hfT1RIRVJTIOKAlCBBcHIgMjQgRml4IEQgc2V0IEhJVyBIMiA1NnB4IGNsYW1wOyBSb2JlcnQgb3ZlcnJpZGUgQXByIDI4CiAgIHdhbnRzIEhJVyBIMiBzYW1lIHNpemUgYXMgb3RoZXIgc2VjdGlvbiBIMnMgKDMycHggZGVza3RvcCwgMjJweCBtb2JpbGUpLiBUcmlwbGUtY2xhc3Mgc3BlYy4gKi8KCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcgewogIGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsKICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50Owp9CgoKLyogQlNQX0FQUjI4X1NWQ19JQ09OX0ZPUkNFX0NFTlRFUl9WMiDigJQgc2VydmljZSBpY29uIHdyYXBwZXIgbm90IGNlbnRlcmVkICh4X2luX2NhcmQ9MjkgbW9iaWxlIC8gMTIwIGRlc2t0b3ApLgogICBBcHIgMjQgcG9saXNoLXYyIGhhcyBmbGV4OjAgMCAxMzBweCB3aGljaCBiZWF0cyBtYXJnaW46YXV0byBvbiBncmlkIGl0ZW1zLgogICBGaXg6IGp1c3RpZnktc2VsZiBjZW50ZXIgKyAxMDAlIHdpZHRoIG9uIGNhcmQsIGZvcmNlIHdyYXBwZXIgaW50byAxLWNvbCBncmlkIGNlbGwuCiAgIENhcmQgZXhwbGljaXRseSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgMWZyIOKAlCB3cmFwcGVyIGF1dG8gY2VudGVycy4gKi8KCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLApodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywKaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgewogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzID4gLmJyeGUtaW1hZ2UsCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzID4gLmJyeGUtaW1hZ2UgewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAganVzdGlmeS1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICBhbGlnbi1zZWxmOiBzdGFydCAhaW1wb3J0YW50OwogIGZsZXg6IDAgMCBhdXRvICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50Owp9CgoKLyogQlNQX0FQUjI4X1NWQ19JQ09OX1VOSUZPUk1fU0NBTEVfVjIg4oCUIFJvYmVydDogInNlcnZpY2UgY2FyZHMgbmVlZCBzYW1lIHNpemUiLgogICBBcHIgMjQgaGFkIHBlci1pY29uIHNjYWxlcyAwLjk1LTEuMzUgdG8gY29tcGVuc2F0ZSBQTkcgd2hpdGVzcGFjZTsgdXNlciBzZWVzIHVuZXZlbi4KICAgMy1JRCBjaGFpbiAoMCwzLDEsMikgYmVhdHMgQXByIDI0ICgwLDMsMCwxKSBieSBjbGFzcytlbGVtZW50IGNvdW50LiBBbGwgMS4wID0gdW5pZm9ybSAxNzB4MTcwLiAqLwpodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDM1cyBpbWcjYnJ4ZS1vcDAzNnMsCmh0bWwgYm9keS5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDBzIGltZyNicnhlLW9wMDQxcywKaHRtbCBib2R5LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgaW1nI2JyeGUtb3AwNDZzLApodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDUwcyBpbWcjYnJ4ZS1vcDA1MXMsCmh0bWwgYm9keS5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTVzIGltZyNicnhlLW9wMDU2cywKaHRtbCBib2R5LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgaW1nI2JyeGUtb3AwNjFzIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMCkgIWltcG9ydGFudDsKfQoKQlNQTE9DQ1NTX0FQUjI4X0hFUkVET0NfRU5EOwogICAgZWNobyAiXG48L3N0eWxlPlxuIjsKfQoKLyogQlNQX0FQUjI4X09QMjU4X1BPTElTSF9SRVNUT1JFRF9GUk9NX0FQUjI0X0JBQ0tVUAogICBSZXN0b3JlZCBBcHIgMjQgZXZlbmluZyBwb2xpc2ggY29udGVudCBwZXIgQXByIDI0IHBvbGlzaC1jb25zb2xpZGF0ZWQgcHJvY2VkdXJlLgogICBTb3VyY2U6IC90bXAvcGF0Y2hfdjFfMjAyNi0wNC0yNC9jb25zb2xpZGF0ZS9leHRyYWN0ZWRfezE2MSwxNjIsMTY1LDE2Nn0udHh0CiAgIFRoZXNlIGFyZSB0aGUgZXhhY3QgYmxvY2tzIHRoYXQgd2VyZSBpbmxpbmVkIEFwciAyNCAoUGhhc2UgRC41KSBidXQgbG9zdCB3aGVuCiAgIEwzLjEgbG9jYXRpb25fc3R5bGVzIHBvcnQgKEFwciAyOCBzZXNzaW9uIDQpIHJlcGxhY2VkIHRoZSBoZXJlZG9jLgogICBQYWdlLWdhdGVkIHRvIE9QIDI1OCArIDE0IHNpYmxpbmcgbG9jYXRpb24gUElEcyBwZXIgwqcxNSBCU1AgUGFnZSBOIENTUyBNaXJyb3IuCiAgIFdwX2hlYWQgcHJpb3JpdHkgMTUwMCB0byBmaXJlIGFmdGVyIGxvY2F0aW9uX3N0eWxlc19pbmplY3QgKDEwMDApIGFuZCBiZWF0CiAgIFN0cmF0ZWd5IEYgIzExNSAoMTExNSkuIEVjaG9lcyByYXcgPHN0eWxlPi88c2NyaXB0PiBibG9ja3MuICovCgphZGRfYWN0aW9uKCd3cF9oZWFkJywgJ2JzcF9vcDI1OF9wb2xpc2hfcmVzdG9yZV9pbmplY3QnLCAxNTAwKTsKZnVuY3Rpb24gYnNwX29wMjU4X3BvbGlzaF9yZXN0b3JlX2luamVjdCgpIHsKICAgIGlmIChpc19hZG1pbigpIHx8IHdwX2RvaW5nX2FqYXgoKSB8fCAoZGVmaW5lZCgnUkVTVF9SRVFVRVNUJykgJiYgUkVTVF9SRVFVRVNUKSkgcmV0dXJuOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOwogICAgJGxvY19waWRzID0gWzI1OCwgMjg1LCAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDVdOwogICAgaWYgKCFpc19wYWdlKCRsb2NfcGlkcykpIHJldHVybjsKICAgIGVjaG8gIlxuPCEtLSBCU1BfQVBSMjhfT1AyNThfUE9MSVNIX1JFU1RPUkVEIOKAlCBBcHIgMjQgcG9saXNoIGNvbnRlbnQgLS0+XG4iOwogICAgCn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFBJRUNFIEMgKEJTUF9QSUVDRV9DX1NDSEVNQV8yMDI2MDUwMl8yMDI5MDMpCiAqIFNlcnZpY2UgcGFnZSBzY2hlbWEgaW5qZWN0b3IuIFBIUC1vbmx5LiBOTyBDU1MuIE5PIEpTLgogKiBNaXJyb3JzIGJzcF9sb2NhdGlvbl9zY2hlbWFfaW5qZWN0IChsaW5lIDE2NjQpLgogKiBTY2hlbWEub3JnIEBncmFwaDogTG9jYWxCdXNpbmVzcy9QbHVtYmVyICsgU2VydmljZSArIEJyZWFkY3J1bWJMaXN0IHBlciBzbHVnLgogKiBUYXJnZXQ6IDkgc2VydmljZSBQSURzICgyODYvMjg3LzI4OC8yODkvMjkwLzI5MS8yOTIvOC8xMikuCiAqIFBlciBSNDA6IGNvZGViYXNlPWxpbmUgMTU4NDsgTUg9YnNwLWFwcjI3LUQ5OyBjaGF0PUNEIGJsdWVwcmludCBtc2dfMTc3Nzc3MTQyMTI1MwogKiBQZXIgUjQ0OiB0aGlzIGZpbGUgPSBQSFAgb25seS4gTm8gQ1NTIGxpdmVzIGhlcmUuCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KJEJTUF9TRVJWSUNFUyA9IGFycmF5KAogICAgJ3Nld2VyLXJlcGFpcicgPT4gYXJyYXkoCiAgICAgICAgJ3BpZCcgPT4gMjg2LAogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdTZXdlciBMaW5lIFJlcGFpciBhbmQgUmVwbGFjZW1lbnQnLAogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ0xpY2Vuc2VkIHNld2VyIGxpbmUgcmVwYWlyIGFuZCByZXBsYWNlbWVudCBpbiBLYW5zYXMgQ2l0eSBhbmQgT3ZlcmxhbmQgUGFyay4gU2FtZS1kYXkgc2VydmljZSwgNS1nZW5lcmF0aW9uIHBsdW1iaW5nIGZhbWlseSwgdHJhbnNwYXJlbnQgZmxhdC1yYXRlIHByaWNpbmcuJwogICAgKSwKICAgICdzZXdlci1jbGVhbmluZycgPT4gYXJyYXkoCiAgICAgICAgJ3BpZCcgPT4gMjg3LAogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdTZXdlciBDbGVhbmluZyBhbmQgQ2xlYW5vdXQnLAogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ1Byb2Zlc3Npb25hbCBzZXdlciBjbGVhbmluZyBhbmQgY2xlYW5vdXQgc2VydmljZXMgaW4gS2Fuc2FzIENpdHkuIEh5ZHJvLWpldHRpbmcsIG1lY2hhbmljYWwgY2xlYW5pbmcsIGNhbWVyYSBpbnNwZWN0aW9uLiBMaWNlbnNlZCBhbmQgaW5zdXJlZC4nCiAgICApLAogICAgJ2RyYWluLWNsZWFuaW5nJyA9PiBhcnJheSgKICAgICAgICAncGlkJyA9PiAyODgsCiAgICAgICAgJ3NlcnZpY2VfbmFtZScgPT4gJ0RyYWluIENsZWFuaW5nJywKICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdEcmFpbiBjbGVhbmluZyBzcGVjaWFsaXN0cyBpbiBLYW5zYXMgQ2l0eS4gS2l0Y2hlbiwgYmF0aHJvb20sIG1haW4gbGluZS4gU2FtZS1kYXkgc2VydmljZSwgdHJhbnNwYXJlbnQgcHJpY2luZywgbm8gdXBzZWxscy4nCiAgICApLAogICAgJ3N1bXAtcHVtcC1lbWVyZ2VuY3knID0+IGFycmF5KAogICAgICAgICdwaWQnID0+IDI4OSwKICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnU3VtcCBQdW1wIFJlcGFpciBhbmQgSW5zdGFsbGF0aW9uJywKICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdFbWVyZ2VuY3kgc3VtcCBwdW1wIHJlcGFpciBhbmQgcmVwbGFjZW1lbnQgaW4gS2Fuc2FzIENpdHkuIEJhdHRlcnkgYmFja3VwIHN5c3RlbXMsIGJhc2VtZW50IHdhdGVycHJvb2ZpbmcuIFNhbWUtZGF5IGZsb29kaW5nIHJlc3BvbnNlLicKICAgICksCiAgICAnbGVhay1yZXBhaXInID0+IGFycmF5KAogICAgICAgICdwaWQnID0+IDI5MCwKICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnTGVhayBSZXBhaXInLAogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ1BsdW1iaW5nIGxlYWsgZGV0ZWN0aW9uIGFuZCByZXBhaXIgaW4gS2Fuc2FzIENpdHkuIFNsYWIgbGVha3MsIHBpcGUgbGVha3MsIGZpeHR1cmUgbGVha3MuIFNhbWUtZGF5IHNlcnZpY2UsIGxpY2Vuc2VkIGFuZCBpbnN1cmVkLicKICAgICksCiAgICAndHJlbmNobGVzcy1zZXdlci1yZXBhaXInID0+IGFycmF5KAogICAgICAgICdwaWQnID0+IDI5MSwKICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnVHJlbmNobGVzcyBTZXdlciBSZXBhaXInLAogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ1RyZW5jaGxlc3Mgc2V3ZXIgcmVwYWlyIGluIEthbnNhcyBDaXR5LiBQaXBlIGJ1cnN0aW5nLCBDSVBQIGxpbmluZywgbm8tZGlnIHNvbHV0aW9ucy4gU2F2ZSB5b3VyIHlhcmQsIGZpeCB5b3VyIHNld2VyLicKICAgICksCiAgICAnd2F0ZXItaGVhdGVyLXJlcGFpcicgPT4gYXJyYXkoCiAgICAgICAgJ3BpZCcgPT4gMjkyLAogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdXYXRlciBIZWF0ZXIgUmVwYWlyIGFuZCBJbnN0YWxsYXRpb24nLAogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ1dhdGVyIGhlYXRlciByZXBhaXIsIHJlcGxhY2VtZW50LCBhbmQgaW5zdGFsbGF0aW9uIGluIEthbnNhcyBDaXR5LiBUYW5rLCB0YW5rbGVzcywgaHlicmlkLiBTYW1lLWRheSBzZXJ2aWNlLCBsaWNlbnNlZCBhbmQgaW5zdXJlZC4nCiAgICApLAogICAgJ3Nld2VyLWNhbWVyYS1pbnNwZWN0aW9uJyA9PiBhcnJheSgKICAgICAgICAncGlkJyA9PiA4LAogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdTZXdlciBDYW1lcmEgSW5zcGVjdGlvbicsCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnUHJvZmVzc2lvbmFsIHNld2VyIGNhbWVyYSBpbnNwZWN0aW9uIGluIEthbnNhcyBDaXR5LiBMb2NhdGUgY2xvZ3MsIGJyZWFrcywgcm9vdCBpbnRydXNpb24uIFByZS1wdXJjaGFzZSBob21lIGluc3BlY3Rpb25zIHdlbGNvbWVkLicKICAgICksCiAgICAnZW1lcmdlbmN5LXBsdW1iaW5nJyA9PiBhcnJheSgKICAgICAgICAncGlkJyA9PiAxMiwKICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnRW1lcmdlbmN5IFBsdW1iaW5nJywKICAgICAgICAnZGVzY3JpcHRpb24nID0+ICcyNC83IGVtZXJnZW5jeSBwbHVtYmluZyBpbiBLYW5zYXMgQ2l0eS4gQnVyc3QgcGlwZXMsIGJhY2t1cHMsIGxlYWtzLCBubyBob3Qgd2F0ZXIuIExpdmUgZGlzcGF0Y2hlciwgc2FtZS1kYXkgc2VydmljZSwgNS1nZW5lcmF0aW9uIGZhbWlseS4nCiAgICApLAogICAgJ2dhcy1saW5lLXJlcGFpci1pbnN0YWxsYXRpb24nID0+IGFycmF5KAogICAgICAgICdwaWQnID0+IDQ2OCwKICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnR2FzIExpbmUgUmVwYWlyIGFuZCBJbnN0YWxsYXRpb24nLAogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ0xpY2Vuc2VkIGdhcyBsaW5lIHJlcGFpciBhbmQgaW5zdGFsbGF0aW9uIGluIEthbnNhcyBDaXR5LiBTYWZlLCBjb2RlLWNvbXBsaWFudCwgc2FtZS1kYXkgc2VydmljZS4gNS1nZW5lcmF0aW9uIHBsdW1iaW5nIGZhbWlseS4nCiAgICApLAogICAgJ3dhdGVyLXNvZnRlbmVycy1maWx0cmF0aW9uJyA9PiBhcnJheSgKICAgICAgICAncGlkJyA9PiA0NjksCiAgICAgICAgJ3NlcnZpY2VfbmFtZScgPT4gJ1dhdGVyIFNvZnRlbmVycyBhbmQgRmlsdHJhdGlvbicsCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnV2F0ZXIgc29mdGVuZXIgYW5kIHdob2xlLWhvbWUgZmlsdHJhdGlvbiBpbnN0YWxsYXRpb24gaW4gS2Fuc2FzIENpdHkuIEhhcmQgd2F0ZXIgc29sdXRpb25zLCBwcm9mZXNzaW9uYWwgc2l6aW5nLCBsaWNlbnNlZCBwbHVtYmVyLicKICAgICksCik7CgpmdW5jdGlvbiBic3BfYnVpbGRfc2VydmljZV9zY2hlbWEoJHNsdWcpIHsKICAgIGdsb2JhbCAkQlNQX1NFUlZJQ0VTOwogICAgaWYgKCFpc3NldCgkQlNQX1NFUlZJQ0VTWyRzbHVnXSkpIHJldHVybiBudWxsOwogICAgJHMgPSAkQlNQX1NFUlZJQ0VTWyRzbHVnXTsKICAgICRwYWdlX3VybCA9ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vJyAuICRzbHVnIC4gJy8nOwogICAgJHNjaGVtYSA9IGFycmF5KAogICAgICAgICdAY29udGV4dCcgPT4gJ2h0dHBzOi8vc2NoZW1hLm9yZycsCiAgICAgICAgJ0BncmFwaCcgPT4gYXJyYXkoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiBhcnJheSgnTG9jYWxCdXNpbmVzcycsICdQbHVtYmVyJyksCiAgICAgICAgICAgICAgICAnQGlkJyA9PiAkcGFnZV91cmwgLiAnI2J1c2luZXNzJywKICAgICAgICAgICAgICAgICduYW1lJyA9PiAnQnJpZ2h0IFNpZGUgUGx1bWJpbmcnLAogICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnTGljZW5zZWQgaW5zdXJlZCBwbHVtYmVyIHNlcnZpbmcgS2Fuc2FzIENpdHkgYW5kIE92ZXJsYW5kIFBhcmsgc2luY2UgdGhlIDE5MjBzLicsCiAgICAgICAgICAgICAgICAndXJsJyA9PiAkcGFnZV91cmwsCiAgICAgICAgICAgICAgICAndGVsZXBob25lJyA9PiAnKzEtOTEzLTk2My0xMDI5JywKICAgICAgICAgICAgICAgICdwcmljZVJhbmdlJyA9PiAnJCQnLAogICAgICAgICAgICAgICAgJ2FkZHJlc3MnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdAdHlwZScgPT4gJ1Bvc3RhbEFkZHJlc3MnLAogICAgICAgICAgICAgICAgICAgICdzdHJlZXRBZGRyZXNzJyA9PiAnMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eScsCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NMb2NhbGl0eScgPT4gJ092ZXJsYW5kIFBhcmsnLAogICAgICAgICAgICAgICAgICAgICdhZGRyZXNzUmVnaW9uJyA9PiAnS1MnLAogICAgICAgICAgICAgICAgICAgICdwb3N0YWxDb2RlJyA9PiAnNjYyMTMnLAogICAgICAgICAgICAgICAgICAgICdhZGRyZXNzQ291bnRyeScgPT4gJ1VTJwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICdhZ2dyZWdhdGVSYXRpbmcnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdAdHlwZScgPT4gJ0FnZ3JlZ2F0ZVJhdGluZycsCiAgICAgICAgICAgICAgICAgICAgJ3JhdGluZ1ZhbHVlJyA9PiAnNC45JywKICAgICAgICAgICAgICAgICAgICAncmV2aWV3Q291bnQnID0+ICczODQnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnU2VydmljZScsCiAgICAgICAgICAgICAgICAnQGlkJyA9PiAkcGFnZV91cmwgLiAnI3NlcnZpY2UnLAogICAgICAgICAgICAgICAgJ25hbWUnID0+ICRzWydzZXJ2aWNlX25hbWUnXSwKICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicgPT4gJHNbJ2Rlc2NyaXB0aW9uJ10sCiAgICAgICAgICAgICAgICAncHJvdmlkZXInID0+IGFycmF5KCdAaWQnID0+ICRwYWdlX3VybCAuICcjYnVzaW5lc3MnKSwKICAgICAgICAgICAgICAgICdhcmVhU2VydmVkJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICBhcnJheSgnQHR5cGUnID0+ICdDaXR5JywgJ25hbWUnID0+ICdLYW5zYXMgQ2l0eScpLAogICAgICAgICAgICAgICAgICAgIGFycmF5KCdAdHlwZScgPT4gJ0NpdHknLCAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnKSwKICAgICAgICAgICAgICAgICAgICBhcnJheSgnQHR5cGUnID0+ICdBZG1pbmlzdHJhdGl2ZUFyZWEnLCAnbmFtZScgPT4gJ0pvaG5zb24gQ291bnR5LCBLUycpCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ3NlcnZpY2VUeXBlJyA9PiAnUGx1bWJpbmcnLAogICAgICAgICAgICAgICAgJ3VybCcgPT4gJHBhZ2VfdXJsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnQnJlYWRjcnVtYkxpc3QnLAogICAgICAgICAgICAgICAgJ2l0ZW1MaXN0RWxlbWVudCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ0B0eXBlJyA9PiAnTGlzdEl0ZW0nLCAncG9zaXRpb24nID0+IDEsICduYW1lJyA9PiAnSG9tZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0nID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vJyksCiAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ0B0eXBlJyA9PiAnTGlzdEl0ZW0nLCAncG9zaXRpb24nID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnID0+ICRzWydzZXJ2aWNlX25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnaXRlbScgPT4gJHBhZ2VfdXJsKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgKQogICAgKTsKICAgIHJldHVybiB3cF9qc29uX2VuY29kZSgkc2NoZW1hLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTKTsKfQoKYWRkX2FjdGlvbignd3BfaGVhZCcsICdic3Bfc2VydmljZV9zY2hlbWFfaW5qZWN0JywgOTk4KTsKZnVuY3Rpb24gYnNwX3NlcnZpY2Vfc2NoZW1hX2luamVjdCgpIHsKICAgIGlmIChpc19hZG1pbigpIHx8IHdwX2RvaW5nX2FqYXgoKSB8fCAoZGVmaW5lZCgnUkVTVF9SRVFVRVNUJykgJiYgUkVTVF9SRVFVRVNUKSkgcmV0dXJuOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOwogICAgJHN2Y19waWRzID0gYXJyYXkoMjg2LCAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCA4LCAxMiwgNDY4LCA0NjkpOwogICAgaWYgKCFpc19zaW5ndWxhcigpIHx8ICFpbl9hcnJheShnZXRfdGhlX0lEKCksICRzdmNfcGlkcywgdHJ1ZSkpIHJldHVybjsKICAgICRzbHVnID0gZ2V0X3Bvc3RfZmllbGQoJ3Bvc3RfbmFtZScsIGdldF90aGVfSUQoKSk7CiAgICAkc2NoZW1hID0gYnNwX2J1aWxkX3NlcnZpY2Vfc2NoZW1hKCRzbHVnKTsKICAgIGlmICgkc2NoZW1hKSB7CiAgICAgICAgZWNobyAiXG4iIC4gJzwhLS0gQlNQX1BJRUNFX0NfU0NIRU1BIC0tPicgLiAiXG4iOwogICAgICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+JyAuICRzY2hlbWEgLiAnPC9zY3JpcHQ+JyAuICJcbiI7CiAgICB9Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFBJRUNFIEQg4oCUIEZBUSBhY2NvcmRpb24gSlMgKEJTUF9QSUVDRV9EX0ZBUV9KU18yMDI2MDUwMl8yMDMwMjYpCiAqIEpTLW9ubHkgaW5qZWN0b3IuIE5PIENTUyBpbiBQSFAgKFI0NCkuIENTUyBsaXZlcyBpbiBzdHlsZS5jc3MuCiAqIFRhcmdldDogOSBzZXJ2aWNlIFBJRHMgKDI4Ni8yODcvMjg4LzI4OS8yOTAvMjkxLzI5Mi84LzEyKS4KICogRGVmYXVsdCBzdGF0ZSBPUEVOLiBDbGljayB0b2dnbGVzIC5ic3AtZmFxLWNvbGxhcHNlZCBjbGFzcyAoQ1NTIGhhbmRsZXMgaGlkZSkuCiAqIFBlciBSNDA6IGNvZGViYXNlPWJzcF9vcDI1OCBsaW5lIDMyMDc7IE1IPWJzcC1tYXkwMi1waWVjZTItcmV2ZXJ0IChkZWZhdWx0LU9QRU4gcmVxKQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmFkZF9hY3Rpb24oJ3dwX2hlYWQnLCAnYnNwX3NlcnZpY2VfZmFxX2FjY29yZGlvbl9qcycsIDE1MDUpOwpmdW5jdGlvbiBic3Bfc2VydmljZV9mYXFfYWNjb3JkaW9uX2pzKCkgewogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdicmlja3NfaXNfYnVpbGRlcl9tYWluJykgJiYgYnJpY2tzX2lzX2J1aWxkZXJfbWFpbigpKSByZXR1cm47CiAgICAkc3ZjX3BpZHMgPSBhcnJheSgyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIDgsIDEyKTsKICAgIGlmICghaXNfcGFnZSgkc3ZjX3BpZHMpKSByZXR1cm47CiAgICBlY2hvICJcbiIgLiAnPCEtLSBCU1BfUElFQ0VfRF9GQVFfSlMgLS0+JyAuICJcbiI7CiAgICA/Pgo8c2NyaXB0IGlkPSJic3AtcGllY2UtZC1mYXEtanMiPgooZnVuY3Rpb24oKSB7CiAgZnVuY3Rpb24gaW5pdCgpIHsKICAgIHZhciBzZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JyeGUtNjAxZWMwJyk7CiAgICBpZiAoIXNlY3Rpb24pIHJldHVybjsKICAgIHZhciBibG9ja3MgPSBzZWN0aW9uLnF1ZXJ5U2VsZWN0b3JBbGwoJy5icnhlLWJsb2NrJyk7CiAgICBibG9ja3MuZm9yRWFjaChmdW5jdGlvbihibG9jaykgewogICAgICBpZiAoYmxvY2suZGF0YXNldC5ic3BGYXFJbml0KSByZXR1cm47CiAgICAgIHZhciBoID0gYmxvY2sucXVlcnlTZWxlY3RvcignaDMuYnJ4ZS1oZWFkaW5nLCBoNC5icnhlLWhlYWRpbmcnKTsKICAgICAgdmFyIHAgPSBibG9jay5xdWVyeVNlbGVjdG9yKCc6c2NvcGUgPiBwLmJyeGUtdGV4dC1iYXNpYycpOwogICAgICBpZiAoIWggfHwgIXApIHJldHVybjsKICAgICAgYmxvY2suZGF0YXNldC5ic3BGYXFJbml0ID0gJzEnOwogICAgICBoLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ic3Atc3ZjLWZhcS10b2dnbGUnKS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgdC5yZW1vdmUoKTsgfSk7CiAgICAgIGguc2V0QXR0cmlidXRlKCdyb2xlJywgJ2J1dHRvbicpOwogICAgICBoLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpOwogICAgICBoLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7CiAgICAgIHZhciB0b2dnbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgIHRvZ2dsZS5jbGFzc05hbWUgPSAnYnNwLXN2Yy1mYXEtdG9nZ2xlJzsKICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOwogICAgICB0b2dnbGUudGV4dENvbnRlbnQgPSAn4oiSJzsKICAgICAgaC5hcHBlbmRDaGlsZCh0b2dnbGUpOwogICAgICBmdW5jdGlvbiBmbGlwKCkgewogICAgICAgIHZhciBpc0NvbGxhcHNlZCA9IGJsb2NrLmNsYXNzTGlzdC50b2dnbGUoJ2JzcC1mYXEtY29sbGFwc2VkJyk7CiAgICAgICAgdG9nZ2xlLnRleHRDb250ZW50ID0gaXNDb2xsYXBzZWQgPyAnKycgOiAn4oiSJzsKICAgICAgICBoLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGlzQ29sbGFwc2VkID8gJ2ZhbHNlJyA6ICd0cnVlJyk7CiAgICAgIH0KICAgICAgaC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZsaXApOwogICAgICBoLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBmbGlwKCk7IH0KICAgICAgfSk7CiAgICB9KTsKICB9CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXQpOwogIGVsc2UgaW5pdCgpOwogIHNldFRpbWVvdXQoaW5pdCwgNTAwKTsKfSkoKTsKPC9zY3JpcHQ+CiAgICA8P3BocAp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBTRVJWSUNFUyBJTkRFWCBTQ0hFTUEgKEJTUF9TVkNfSU5ERVhfU0NIRU1BXzIwMjYwNTAyXzIxMjExOCkKICogSW5qZWN0cyBDb2xsZWN0aW9uUGFnZSArIEl0ZW1MaXN0IEpTT04tTEQgZm9yIC9zZXJ2aWNlcy8gKFBJRCA2MDApLgogKiBQZXIgUjQ0OiBQSFAtb25seS4gTWlycm9ycyBQaWVjZSBDIGJzcF9zZXJ2aWNlX3NjaGVtYV9pbmplY3QgcGF0dGVybi4KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwphZGRfYWN0aW9uKCd3cF9oZWFkJywgJ2JzcF9zZXJ2aWNlc19pbmRleF9zY2hlbWFfaW5qZWN0JywgOTk4KTsKZnVuY3Rpb24gYnNwX3NlcnZpY2VzX2luZGV4X3NjaGVtYV9pbmplY3QoKSB7CiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JyaWNrc19pc19idWlsZGVyX21haW4nKSAmJiBicmlja3NfaXNfYnVpbGRlcl9tYWluKCkpIHJldHVybjsKICAgIGlmICghaXNfc2luZ3VsYXIoKSB8fCBnZXRfdGhlX0lEKCkgIT09IDYwMCkgcmV0dXJuOwogICAgJHBhZ2VfdXJsID0gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9zZXJ2aWNlcy8nOwogICAgJHNlcnZpY2VzX2xpc3QgPSBhcnJheSgKICAgICAgICBhcnJheSgnbmFtZScgPT4gJ1Nld2VyIENhbWVyYSBJbnNwZWN0aW9uJywgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9zZXdlci1jYW1lcmEtaW5zcGVjdGlvbi8nKSwKICAgICAgICBhcnJheSgnbmFtZScgPT4gJ0VtZXJnZW5jeSBQbHVtYmluZycsICAgICAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9lbWVyZ2VuY3ktcGx1bWJpbmcvJyksCiAgICAgICAgYXJyYXkoJ25hbWUnID0+ICdTZXdlciBMaW5lIFJlcGFpcicsICAgICAgICAgICAgICd1cmwnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vc2V3ZXItcmVwYWlyLycpLAogICAgICAgIGFycmF5KCduYW1lJyA9PiAnVHJlbmNobGVzcyBTZXdlciBSZXBhaXInLCAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3RyZW5jaGxlc3Mtc2V3ZXItcmVwYWlyLycpLAogICAgICAgIGFycmF5KCduYW1lJyA9PiAnU2V3ZXIgQ2xlYW5pbmcnLCAgICAgICAgICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3Nld2VyLWNsZWFuaW5nLycpLAogICAgICAgIGFycmF5KCduYW1lJyA9PiAnRHJhaW4gQ2xlYW5pbmcnLCAgICAgICAgICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL2RyYWluLWNsZWFuaW5nLycpLAogICAgICAgIGFycmF5KCduYW1lJyA9PiAnV2F0ZXIgSGVhdGVyIFJlcGFpcicsICAgICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3dhdGVyLWhlYXRlci1yZXBhaXIvJyksCiAgICAgICAgYXJyYXkoJ25hbWUnID0+ICdTdW1wIFB1bXAgUmVwYWlyJywgICAgICAgICAgICAgICd1cmwnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vc3VtcC1wdW1wLWVtZXJnZW5jeS8nKSwKICAgICAgICBhcnJheSgnbmFtZScgPT4gJ0xlYWsgUmVwYWlyJywgICAgICAgICAgICAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9sZWFrLXJlcGFpci8nKSwKICAgICk7CiAgICAkaXRlbXMgPSBhcnJheSgpOwogICAgZm9yZWFjaCAoJHNlcnZpY2VzX2xpc3QgYXMgJGkgPT4gJHN2YykgewogICAgICAgICRpdGVtc1tdID0gYXJyYXkoCiAgICAgICAgICAgICdAdHlwZScgPT4gJ0xpc3RJdGVtJywKICAgICAgICAgICAgJ3Bvc2l0aW9uJyA9PiAkaSArIDEsCiAgICAgICAgICAgICduYW1lJyA9PiAkc3ZjWyduYW1lJ10sCiAgICAgICAgICAgICd1cmwnID0+ICRzdmNbJ3VybCddLAogICAgICAgICk7CiAgICB9CiAgICAkc2NoZW1hID0gYXJyYXkoCiAgICAgICAgJ0Bjb250ZXh0JyA9PiAnaHR0cHM6Ly9zY2hlbWEub3JnJywKICAgICAgICAnQGdyYXBoJyA9PiBhcnJheSgKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAnQHR5cGUnID0+IGFycmF5KCdMb2NhbEJ1c2luZXNzJywgJ1BsdW1iZXInKSwKICAgICAgICAgICAgICAgICdAaWQnID0+ICRwYWdlX3VybCAuICcjYnVzaW5lc3MnLAogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdCcmlnaHQgU2lkZSBQbHVtYmluZycsCiAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdMaWNlbnNlZCBpbnN1cmVkIHBsdW1iZXIgc2VydmluZyBLYW5zYXMgQ2l0eSBhbmQgT3ZlcmxhbmQgUGFyayBzaW5jZSB0aGUgMTkyMHMuJywKICAgICAgICAgICAgICAgICd1cmwnID0+ICRwYWdlX3VybCwKICAgICAgICAgICAgICAgICd0ZWxlcGhvbmUnID0+ICcrMS05MTMtOTYzLTEwMjknLAogICAgICAgICAgICAgICAgJ3ByaWNlUmFuZ2UnID0+ICckJCcsCiAgICAgICAgICAgICAgICAnYWRkcmVzcycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnUG9zdGFsQWRkcmVzcycsCiAgICAgICAgICAgICAgICAgICAgJ3N0cmVldEFkZHJlc3MnID0+ICcxMjAyMiBCbHVlIFZhbGxleSBQa3d5JywKICAgICAgICAgICAgICAgICAgICAnYWRkcmVzc0xvY2FsaXR5JyA9PiAnT3ZlcmxhbmQgUGFyaycsCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NSZWdpb24nID0+ICdLUycsCiAgICAgICAgICAgICAgICAgICAgJ3Bvc3RhbENvZGUnID0+ICc2NjIxMycsCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NDb3VudHJ5JyA9PiAnVVMnCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ2FnZ3JlZ2F0ZVJhdGluZycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnQWdncmVnYXRlUmF0aW5nJywKICAgICAgICAgICAgICAgICAgICAncmF0aW5nVmFsdWUnID0+ICc0LjknLAogICAgICAgICAgICAgICAgICAgICdyZXZpZXdDb3VudCcgPT4gJzM4NCcKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKSwKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdDb2xsZWN0aW9uUGFnZScsCiAgICAgICAgICAgICAgICAnQGlkJyA9PiAkcGFnZV91cmwsCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0JyaWdodCBTaWRlIFBsdW1iaW5nIFNlcnZpY2VzIGluIEthbnNhcyBDaXR5JywKICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ1Nld2VyLCBkcmFpbiwgd2F0ZXIgaGVhdGVyLCBhbmQgbGVhayByZXBhaXIgc2VydmljZXMgYWNyb3NzIEthbnNhcyBDaXR5IGFuZCBPdmVybGFuZCBQYXJrLiBGbGF0LXJhdGUgcHJpY2luZywgNS1nZW5lcmF0aW9uIHBsdW1iaW5nIGZhbWlseSwgc2FtZS1kYXkgc2VydmljZS4nLAogICAgICAgICAgICAgICAgJ3VybCcgPT4gJHBhZ2VfdXJsLAogICAgICAgICAgICAgICAgJ21haW5FbnRpdHknID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdAdHlwZScgPT4gJ0l0ZW1MaXN0JywKICAgICAgICAgICAgICAgICAgICAnbnVtYmVyT2ZJdGVtcycgPT4gY291bnQoJHNlcnZpY2VzX2xpc3QpLAogICAgICAgICAgICAgICAgICAgICdpdGVtTGlzdEVsZW1lbnQnID0+ICRpdGVtcwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApLAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICdAdHlwZScgPT4gJ0JyZWFkY3J1bWJMaXN0JywKICAgICAgICAgICAgICAgICdpdGVtTGlzdEVsZW1lbnQnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgIGFycmF5KCdAdHlwZScgPT4gJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJyA9PiAxLCAnbmFtZScgPT4gJ0hvbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdpdGVtJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tLycpLAogICAgICAgICAgICAgICAgICAgIGFycmF5KCdAdHlwZScgPT4gJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJyA9PiAyLCAnbmFtZScgPT4gJ1NlcnZpY2VzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnaXRlbScgPT4gJHBhZ2VfdXJsKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgKQogICAgKTsKICAgIGVjaG8gIlxuIiAuICc8IS0tIEJTUF9TVkNfSU5ERVhfU0NIRU1BIC0tPicgLiAiXG4iOwogICAgZWNobyAnPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4nIC4gd3BfanNvbl9lbmNvZGUoJHNjaGVtYSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUykgLiAnPC9zY3JpcHQ+JyAuICJcbiI7Cn0KCgovLyBCU1BfNjE5X0NBTExfQ1RBX0lOSkVDVF8yMDI2XzA1XzAzCmFkZF9hY3Rpb24oJ3dwX2Zvb3RlcicsIGZ1bmN0aW9uKCkgewogICAgPz4KICAgIDxzY3JpcHQ+CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gaW5qZWN0Q2FsbEN0YSgpIHsKICAgICAgICAgICAgLy8gRmluZCBhbnkgIkkgYW0gYSBidXR0b24iIHBsYWNlaG9sZGVyIHNwYW4gaW4gdGhlIGhlYWRlciBhcmVhCiAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuLmJyeGUtYnV0dG9uLmJyaWNrcy1idXR0b24uYnJpY2tzLWJhY2tncm91bmQtcHJpbWFyeScpOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlaG9sZGVycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBwbGFjZWhvbGRlcnNbaV07CiAgICAgICAgICAgICAgICBpZiAoKHNwYW4udGV4dENvbnRlbnQgfHwgJycpLnRyaW0oKSA9PT0gJ0kgYW0gYSBidXR0b24nKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgICAgICAgICAgICAgICAgYS5ocmVmID0gJ3RlbDorMTkxMzk2MzEwMjknOwogICAgICAgICAgICAgICAgICAgIGEuY2xhc3NOYW1lID0gJ2JzcC1jYWxsLWN0YSBicnhlLWJ1dHRvbiBicmlja3MtYnV0dG9uJzsKICAgICAgICAgICAgICAgICAgICBhLnRleHRDb250ZW50ID0gJ0NhbGwgKDkxMykgOTYzLTEwMjknOwogICAgICAgICAgICAgICAgICAgIGEuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0NhbGwgQnJpZ2h0IFNpZGUgUGx1bWJpbmcgYXQgOTEzLTk2My0xMDI5Jyk7CiAgICAgICAgICAgICAgICAgICAgc3Bhbi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChhLCBzcGFuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbmplY3RDYWxsQ3RhKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbmplY3RDYWxsQ3RhKCk7CiAgICAgICAgfQogICAgICAgIC8vIFJlLXJ1biBhZnRlciBCcmlja3MgbGF6eS1sb2FkIHJldmVhbHMKICAgICAgICBzZXRUaW1lb3V0KGluamVjdENhbGxDdGEsIDgwMCk7CiAgICB9KSgpOwogICAgPC9zY3JpcHQ+CiAgICA8P3BocAp9LCA5OSk7CgoKLy8gQlNQX05BVl9IQU1CVVJHRVJfV0lSRVVQXzIwMjZfMDVfMDMKYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7CiAgICA/PgogICAgPHNjcmlwdD4KICAgIChmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiB3aXJlSGFtYnVyZ2VyKCkgewogICAgICAgICAgICB2YXIgdG9nZ2xlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyIGJ1dHRvbi5icnhlLXRvZ2dsZScpOwogICAgICAgICAgICB2YXIgbmF2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JyeGUtdm9xdXZvJyk7CiAgICAgICAgICAgIGlmICghdG9nZ2xlIHx8ICFuYXYgfHwgdG9nZ2xlLmRhdGFzZXQuYnNwV2lyZWQgPT09ICcxJykgcmV0dXJuOwogICAgICAgICAgICB0b2dnbGUuZGF0YXNldC5ic3BXaXJlZCA9ICcxJzsKICAgICAgICAgICAgdG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdmFyIGlzT3BlbiA9IG5hdi5jbGFzc0xpc3QudG9nZ2xlKCdicngtb3BlbicpOwogICAgICAgICAgICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGlzT3BlbiA/ICd0cnVlJyA6ICdmYWxzZScpOwogICAgICAgICAgICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGlzT3BlbiA/ICdDbG9zZScgOiAnT3BlbicpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdic3AtbmF2LW9wZW4nLCBpc09wZW4pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgLy8gQ2xpY2sgb3V0c2lkZSB0byBjbG9zZQogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICghbmF2LmNsYXNzTGlzdC5jb250YWlucygnYnJ4LW9wZW4nKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKHRvZ2dsZS5jb250YWlucyhlLnRhcmdldCkgfHwgbmF2LmNvbnRhaW5zKGUudGFyZ2V0KSkgcmV0dXJuOwogICAgICAgICAgICAgICAgbmF2LmNsYXNzTGlzdC5yZW1vdmUoJ2JyeC1vcGVuJyk7CiAgICAgICAgICAgICAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CiAgICAgICAgICAgICAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ09wZW4nKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnYnNwLW5hdi1vcGVuJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvLyBDbG9zZSBvbiBFU0MKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScgJiYgbmF2LmNsYXNzTGlzdC5jb250YWlucygnYnJ4LW9wZW4nKSkgewogICAgICAgICAgICAgICAgICAgIG5hdi5jbGFzc0xpc3QucmVtb3ZlKCdicngtb3BlbicpOwogICAgICAgICAgICAgICAgICAgIHRvZ2dsZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKICAgICAgICAgICAgICAgICAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ09wZW4nKTsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2JzcC1uYXYtb3BlbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgd2lyZUhhbWJ1cmdlcik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2lyZUhhbWJ1cmdlcigpOwogICAgICAgIH0KICAgICAgICBzZXRUaW1lb3V0KHdpcmVIYW1idXJnZXIsIDgwMCk7ICAvLyByZS1ydW4gYWZ0ZXIgQnJpY2tzIGxhenkgcmV2ZWFsCiAgICB9KSgpOwogICAgPC9zY3JpcHQ+CiAgICA8P3BocAp9LCAxMDApOwoKCi8vIEJTUF9QSUQyODdfTUlEX1NXQVBfMjAyNl8wNV8wMwphZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbigpIHsKICAgIGlmICghaXNfc2luZ3VsYXIoKSB8fCBnZXRfdGhlX0lEKCkgIT09IDI4NykgcmV0dXJuOwogICAgPz4KICAgIDxzY3JpcHQ+CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gc3dhcCgpIHsKICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdicnhlLWNjNzI3NScpOwogICAgICAgICAgICBpZiAoIWltZykgcmV0dXJuOwogICAgICAgICAgICB2YXIgY2Fub25pY2FsID0gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNS9hdWRyZXktbWlkLXNld2VyLWNsZWFuaW5nLXNjYWxlZC5wbmcnOwogICAgICAgICAgICBpZiAoaW1nLnNyYyAmJiBpbWcuc3JjLmluZGV4T2YoJ2F1ZHJleS1taWQtc2V3ZXItY2xlYW5pbmcnKSAhPT0gLTEpIHJldHVybjsgIC8vIGFscmVhZHkgY29ycmVjdAogICAgICAgICAgICBpbWcuc3JjID0gY2Fub25pY2FsOwogICAgICAgICAgICBpZiAoaW1nLmRhdGFzZXQuc3JjKSBpbWcuZGF0YXNldC5zcmMgPSBjYW5vbmljYWw7CiAgICAgICAgICAgIGltZy5yZW1vdmVBdHRyaWJ1dGUoJ3NyY3NldCcpOwogICAgICAgICAgICBpZiAoaW1nLmNsYXNzTGlzdCkgaW1nLmNsYXNzTGlzdC5yZW1vdmUoJ2JyaWNrcy1sYXp5LWhpZGRlbicpOwogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgc3dhcCk7CiAgICAgICAgZWxzZSBzd2FwKCk7CiAgICAgICAgc2V0VGltZW91dChzd2FwLCA4MDApOwogICAgfSkoKTsKICAgIDwvc2NyaXB0PgogICAgPD9waHAKfSwgMTAwKTsKCgovLyBCU1BfRklHTUFfSEVST19TV0FQU18yMDI2XzA1XzAzCmFkZF9hY3Rpb24oJ3dwX2Zvb3RlcicsIGZ1bmN0aW9uKCkgewogICAgaWYgKCFpc19zaW5ndWxhcigpKSByZXR1cm47CiAgICAkcGlkID0gZ2V0X3RoZV9JRCgpOwogICAgaWYgKCFpbl9hcnJheSgkcGlkLCBbOCwgMTJdKSkgcmV0dXJuOwogICAgPz4KICAgIDxzY3JpcHQ+CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHBpZCA9IDw/cGhwIGVjaG8gKGludCkkcGlkOyA/PjsKICAgICAgICBmdW5jdGlvbiBzd2FwKGlkLCB1cmwpIHsKICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgICAgICAgaWYgKCFpbWcgfHwgIXVybCkgcmV0dXJuOwogICAgICAgICAgICBpZiAoaW1nLnNyYyA9PT0gdXJsKSByZXR1cm47CiAgICAgICAgICAgIGltZy5zcmMgPSB1cmw7CiAgICAgICAgICAgIGlmIChpbWcuZGF0YXNldC5zcmMpIGltZy5kYXRhc2V0LnNyYyA9IHVybDsKICAgICAgICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSgnc3Jjc2V0Jyk7CiAgICAgICAgICAgIGlmIChpbWcuY2xhc3NMaXN0KSBpbWcuY2xhc3NMaXN0LnJlbW92ZSgnYnJpY2tzLWxhenktaGlkZGVuJyk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKICAgICAgICAgICAgaWYgKHBpZCA9PT0gOCkgewogICAgICAgICAgICAgICAgc3dhcCgnYnJ4ZS0wMzM5NzQnLCAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L2F1ZHJleS1oZXJvLXNld2VyLWNhbWVyYS1jYW5vbmljYWwtMjAyNjA1MDJfMTk1MDI3LnBuZycpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHBpZCA9PT0gMTIpIHsKICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgaWNvbnMgbWFwcGluZyAodGhlc2UgdGFyZ2V0IHNwZWNpZmljIGJyeGUtSURzIGluIFBJRCAxMiBwcm9jZXNzIHN0ZXAgc2VjdGlvbikKICAgICAgICAgICAgICAgIC8vIEJhc2VkIG9uIEZpZ21hOiA0IHN0ZXAgaWNvbnMgZXhpc3Qg4oCUIGNhbGwtYW5zd2VyZWQsIHRlY2gtZGlzcGF0Y2hlZCwgb24tc2l0ZSwgb24tb3VyLXdheQogICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IFBJRCAxMiBwcm9jZXNzIHN0ZXBzIHVzZSBleGlzdGluZyBpY29uczsgdGhlIG1pc3Npbmcgb25lcyBhcmUgcGxhY2Vob2xkZXIvU1ZHCiAgICAgICAgICAgICAgICAvLyBJbmplY3Qgb25seSB3aGVuIGN1cnJlbnQgc3JjIGlzIGRhdGE6aW1hZ2UgKHBsYWNlaG9sZGVyKSBhbmQgdGhlIGVsZW1lbnQgYmVsb25ncyB0byBzdGVwIHJvdwogICAgICAgICAgICAgICAgLy8gV2l0aG91dCBleGFjdCBicnhlLUlEcyBmcm9tIFBJRCAxMiBwcm9jZXNzIHJvdywgd2Ugc2tpcCBhdXRvLXN3YXAgZm9yIG5vdwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBydW4pOwogICAgICAgIGVsc2UgcnVuKCk7CiAgICAgICAgc2V0VGltZW91dChydW4sIDgwMCk7CiAgICB9KSgpOwogICAgPC9zY3JpcHQ+CiAgICA8P3BocAp9LCAxMDApOwoKCi8vIEJTUF9QSUQ0NjhfSEVST19HQVNMSU5FX1NXQVBfMjAyNl8wNV8wMwphZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbigpIHsKICAgIGlmICghaXNfc2luZ3VsYXIoKSB8fCBnZXRfdGhlX0lEKCkgIT09IDQ2OCkgcmV0dXJuOwogICAgPz4KICAgIDxzY3JpcHQ+CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gc3dhcCgpIHsKICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdicnhlLTAzMzk3NCcpOwogICAgICAgICAgICBpZiAoIWltZykgcmV0dXJuOwogICAgICAgICAgICB2YXIgdXJsID0gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNS9hdWRyZXktaGVyby1nYXMtbGluZS11cGNsb3NlLXRydWUtY2Fub25pY2FsLXNjYWxlZC5wbmcnOwogICAgICAgICAgICBpZiAoaW1nLnNyYyA9PT0gdXJsKSByZXR1cm47CiAgICAgICAgICAgIGltZy5zcmMgPSB1cmw7CiAgICAgICAgICAgIGlmIChpbWcuZGF0YXNldC5zcmMpIGltZy5kYXRhc2V0LnNyYyA9IHVybDsKICAgICAgICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSgnc3Jjc2V0Jyk7CiAgICAgICAgICAgIGlmIChpbWcuY2xhc3NMaXN0KSBpbWcuY2xhc3NMaXN0LnJlbW92ZSgnYnJpY2tzLWxhenktaGlkZGVuJyk7CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBzd2FwKTsKICAgICAgICBlbHNlIHN3YXAoKTsKICAgICAgICBzZXRUaW1lb3V0KHN3YXAsIDgwMCk7CiAgICB9KSgpOwogICAgPC9zY3JpcHQ+CiAgICA8P3BocAp9LCAxMDApOwoKCi8vIEJTUF9QSUQ0NjhfU0FGRVRZX1NURVBTX0pTX0lOSkVDVF8yMDI2XzA1XzAzCmFkZF9hY3Rpb24oJ3dwX2Zvb3RlcicsIGZ1bmN0aW9uKCkgewogICAgaWYgKCFpc19zaW5ndWxhcigpIHx8IGdldF90aGVfSUQoKSAhPT0gNDY4KSByZXR1cm47CiAgICA/PgogICAgPHNjcmlwdD4KICAgIChmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBpbmplY3QoKSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYnNwLWdhc2xpbmUtc2FmZXR5LXN0ZXBzJykpIHJldHVybjsKICAgICAgICAgICAgdmFyIGh0bWwgPSAnPHNlY3Rpb24gY2xhc3M9ImJzcC1nYXNsaW5lLXNhZmV0eS1zdGVwcyIgYXJpYS1sYWJlbGxlZGJ5PSJic3AtZ2FzbGluZS1zYWZldHktaDIiPicgKwogICAgICAgICAgICAgICAgJzxzdHlsZT4uYnNwLWdhc2xpbmUtc2FmZXR5LXN0ZXBze3BhZGRpbmc6NjBweCAyNHB4O21heC13aWR0aDoxMTQwcHg7bWFyZ2luOjgwcHggYXV0bzt9LmJzcC1nc3MtaW5uZXJ7dGV4dC1hbGlnbjpjZW50ZXI7fS5ic3AtZ3NzLWhlYWRpbmd7Zm9udDo3MDAgMzJweC8xLjIgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojMUQxNzYwO21hcmdpbjowIDAgMTJweDt0ZXh0LWFsaWduOmNlbnRlcjt9QG1lZGlhKG1heC13aWR0aDo3NjdweCl7LmJzcC1nc3MtaGVhZGluZ3tmb250LXNpemU6MjRweDt9fS5ic3AtZ3NzLXVuZGVybGluZXt3aWR0aDoxMjBweDtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6IzMwQzVGRjttYXJnaW46MCBhdXRvIDMycHg7Ym9yZGVyLXJhZGl1czoycHg7fS5ic3AtZ3NzLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwxZnIpO2dhcDoxNnB4O30uYnNwLWdzcy1jYXJke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MjRweCAxNnB4O2JhY2tncm91bmQ6I0Y4RkFGQztib3JkZXI6MXB4IHNvbGlkICNENUVBRkY7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDJweCA0cHggcmdiYSgyOSwyMyw5NiwwLjA4KTtnYXA6MTZweDt9LmJzcC1nc3MtaWNvbnt3aWR0aDo5NnB4O2hlaWdodDo5NnB4O29iamVjdC1maXQ6Y29udGFpbjt9LmJzcC1nc3MtbGFiZWx7Zm9udDo2MDAgMTZweC8xLjQgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojMUQxNzYwO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO31AbWVkaWEobWF4LXdpZHRoOjk5MXB4KXsuYnNwLWdzcy1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpO319QG1lZGlhKG1heC13aWR0aDo3NjdweCl7LmJzcC1nc3MtZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30uYnNwLWdzcy1jYXJke2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6MTZweDtnYXA6MTZweDt9LmJzcC1nc3MtaWNvbnt3aWR0aDo3MnB4O2hlaWdodDo3MnB4O2ZsZXgtc2hyaW5rOjA7fS5ic3AtZ3NzLWxhYmVse3RleHQtYWxpZ246bGVmdDt9fTwvc3R5bGU+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYnNwLWdzcy1pbm5lciI+JyArCiAgICAgICAgICAgICAgICAgICc8aDIgaWQ9ImJzcC1nYXNsaW5lLXNhZmV0eS1oMiIgY2xhc3M9ImJzcC1nc3MtaGVhZGluZyI+SWYgWW91IFNtZWxsIEdhcyAmcmFycjsgRG8gVGhpcyBSaWdodCBOb3c8L2gyPicgKwogICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYnNwLWdzcy11bmRlcmxpbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJzcC1nc3MtZ3JpZCI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJzcC1nc3MtY2FyZCI+PGltZyBzcmM9Imh0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNS9hdWRyZXktaWNvbi1nYXNsaW5lLWZsaXAtc3dpdGNoZXMucG5nIiBhbHQ9IkRvIG5vdCBmbGlwIHN3aXRjaGVzIiBjbGFzcz0iYnNwLWdzcy1pY29uIj48cCBjbGFzcz0iYnNwLWdzcy1sYWJlbCI+RG8gbm90IGZsaXAgc3dpdGNoZXMuPC9wPjwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJic3AtZ3NzLWNhcmQiPjxpbWcgc3JjPSJodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvYXVkcmV5LWljb24tZ2FzbGluZS1saWdodC1tYXRjaGVzLnBuZyIgYWx0PSJEbyBub3QgbGlnaHQgbWF0Y2hlcyIgY2xhc3M9ImJzcC1nc3MtaWNvbiI+PHAgY2xhc3M9ImJzcC1nc3MtbGFiZWwiPkRvIG5vdCBsaWdodCBtYXRjaGVzLjwvcD48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYnNwLWdzcy1jYXJkIj48aW1nIHNyYz0iaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L2F1ZHJleS1pY29uLWdhc2xpbmUtbGVhdmUtaG91c2UucG5nIiBhbHQ9IkxlYXZlIGhvdXNlIiBjbGFzcz0iYnNwLWdzcy1pY29uIj48cCBjbGFzcz0iYnNwLWdzcy1sYWJlbCI+TGVhdmUgaG91c2UuPC9wPjwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJic3AtZ3NzLWNhcmQiPjxpbWcgc3JjPSJodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvYXVkcmV5LWljb24tZ2FzbGluZS1jYWxsLWZyb20tb3V0c2lkZS5wbmciIGFsdD0iQ2FsbCBmcm9tIG91dHNpZGUiIGNsYXNzPSJic3AtZ3NzLWljb24iPjxwIGNsYXNzPSJic3AtZ3NzLWxhYmVsIj5DYWxsIGZyb20gb3V0c2lkZS48L3A+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAnPC9zZWN0aW9uPic7CiAgICAgICAgICAgIC8vIEZpbmQgYSBwbGFjZSB0byBpbnNlcnQg4oCUIGFmdGVyIHRydXN0IGJhZGdlcywgT1IgYWZ0ZXIgdGhlIGZpcnN0IDMgc2VjdGlvbnMgaW4gbWFpbgogICAgICAgICAgICB2YXIgYW5jaG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JyeGUtYjkyNGU2LCAjYnJ4ZS1iNTI1NWMsIG1haW4jYnJ4LWNvbnRlbnQgPiBzZWN0aW9uOm50aC1vZi10eXBlKDMpJyk7CiAgICAgICAgICAgIGlmICghYW5jaG9yKSB7CiAgICAgICAgICAgICAgICAvLyBMYXN0IHJlc29ydDogYXBwZW5kIHRvIG1haW4gY29udGVudAogICAgICAgICAgICAgICAgdmFyIG1haW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtYWluI2JyeC1jb250ZW50Jyk7CiAgICAgICAgICAgICAgICBpZiAobWFpbikgewogICAgICAgICAgICAgICAgICAgIG1haW4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBodG1sKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGFuY2hvci5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywgaHRtbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluamVjdCk7CiAgICAgICAgZWxzZSBpbmplY3QoKTsKICAgICAgICBzZXRUaW1lb3V0KGluamVjdCwgODAwKTsKICAgIH0pKCk7CiAgICA8L3NjcmlwdD4KICAgIDw/cGhwCn0sIDEwMCk7CgoKCgoKCgoKLy8gPT09IEJTUCB2MyB0aGVtZSBmaWxlIGVuZHBvaW50cyAoc3RhcnQpID09PSBTdGVwIEIgMjAyNi0wNS0wNCA9PT0KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEJTUCB2MyB0aGVtZSBmaWxlIGVuZHBvaW50cyDigJQgYXRvbWljLXJlcGxhY2UgdmlhIFdQX0ZpbGVzeXN0ZW0KLy8gUGVyIMKnNTEuMTAuMSBSRUNPTU1FTkRFRCBjYW5kaWRhdGUgKGIpIEN1c3RvbSBSRVNUIGVuZHBvaW50Ci8vIE9wZXJhdGlvbjogcmVnaXN0ZXJfdjNfdGhlbWVfZW5kcG9pbnRzIChSb2JlcnQgQUNLIGdhdGVkKQovLyBDaXRhdGlvbnM6Ci8vICAgLSBCU1BfQnJpY2tzX0NvZGViYXNlX0RvY3VtZW50YXRpb24uaHRtbCAjZmlnbWEtYXBpLWNvbXByZWhlbnNpdmUtMjAyNi0wNS0wNCDCpzUxLjEwLjEKLy8gICAtIGtub3dsZWRnZV9nYXBzL2luc3RhbGxfY2hpbGRfYWx0ZXJuYXRpdmVfMjAyNl8wNV8wNC5tZCAoUGVycGxleGl0eSA3IGNpdGVzKQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmFkZF9hY3Rpb24oJ3Jlc3RfYXBpX2luaXQnLCBmdW5jdGlvbigpIHsKICAgICRhbGxvd2VkX3BhdGhzID0gWydzdHlsZS5jc3MnLCAnZnVuY3Rpb25zLnBocCddOwoKICAgIC8vIEdFVCAvd3AtanNvbi9ic3AvdjMvdGhlbWUvZmlsZS1yZWFkP3JlbHBhdGg9c3R5bGUuY3NzCiAgICByZWdpc3Rlcl9yZXN0X3JvdXRlKCdic3AvdjMnLCAnL3RoZW1lL2ZpbGUtcmVhZCcsIFsKICAgICAgICAnbWV0aG9kcycgID0+ICdHRVQnLAogICAgICAgICdjYWxsYmFjaycgPT4gZnVuY3Rpb24oV1BfUkVTVF9SZXF1ZXN0ICRyZXEpIHVzZSAoJGFsbG93ZWRfcGF0aHMpIHsKICAgICAgICAgICAgJHJlbCA9IHNhbml0aXplX3RleHRfZmllbGQoJHJlcS0+Z2V0X3BhcmFtKCdyZWxwYXRoJykpOwogICAgICAgICAgICBpZiAoIWluX2FycmF5KCRyZWwsICRhbGxvd2VkX3BhdGhzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignZGlzYWxsb3dlZF9wYXRoJywgJ1BhdGggbm90IHdoaXRlbGlzdGVkJywgWydzdGF0dXMnID0+IDQwMF0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYXRoID0gdHJhaWxpbmdzbGFzaGl0KGdldF9zdHlsZXNoZWV0X2RpcmVjdG9yeSgpKSAuICRyZWw7CiAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJHBhdGgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdub3RfZm91bmQnLCAnRmlsZSBub3QgZm91bmQnLCBbJ3N0YXR1cycgPT4gNDA0XSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVxdWlyZV9vbmNlIEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvZmlsZS5waHAnOwogICAgICAgICAgICBXUF9GaWxlc3lzdGVtKCk7CiAgICAgICAgICAgIGdsb2JhbCAkd3BfZmlsZXN5c3RlbTsKICAgICAgICAgICAgJGNvbnRlbnQgPSAkd3BfZmlsZXN5c3RlbS0+Z2V0X2NvbnRlbnRzKCRwYXRoKTsKICAgICAgICAgICAgaWYgKCRjb250ZW50ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcigncmVhZF9mYWlsZWQnLCAnRmlsZXN5c3RlbSByZWFkIGZhaWxlZCcsIFsnc3RhdHVzJyA9PiA1MDBdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnICA9PiB0cnVlLAogICAgICAgICAgICAgICAgJ3JlbHBhdGgnICA9PiAkcmVsLAogICAgICAgICAgICAgICAgJ3BhdGgnICAgICA9PiAkcGF0aCwKICAgICAgICAgICAgICAgICdieXRlcycgICAgPT4gc3RybGVuKCRjb250ZW50KSwKICAgICAgICAgICAgICAgICdzaGEyNTYnICAgPT4gaGFzaCgnc2hhMjU2JywgJGNvbnRlbnQpLAogICAgICAgICAgICAgICAgJ210aW1lJyAgICA9PiBAZmlsZW10aW1lKCRwYXRoKSwKICAgICAgICAgICAgICAgICdjb250ZW50JyAgPT4gYmFzZTY0X2VuY29kZSgkY29udGVudCksIC8vIGJhc2U2NCB0byBhdm9pZCBKU09OIGVuY29kaW5nIGlzc3VlcyB3aXRoIGJpbmFyeS9VVEYtOAogICAgICAgICAgICAgICAgJ2VuY29kaW5nJyA9PiAnYmFzZTY0JywKICAgICAgICAgICAgXTsKICAgICAgICB9LAogICAgICAgICdwZXJtaXNzaW9uX2NhbGxiYWNrJyA9PiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRfdXNlcl9jYW4oJ2VkaXRfdGhlbWVzJyk7CiAgICAgICAgfSwKICAgIF0pOwoKICAgIC8vIFBPU1QgL3dwLWpzb24vYnNwL3YzL3RoZW1lL2ZpbGUtd3JpdGUKICAgIC8vIEJvZHk6IHsgcmVscGF0aDogJ3N0eWxlLmNzcycsIGNvbnRlbnQ6ICc8ZnVsbCBuZXcgY29udGVudHM+JywgZXhwZWN0ZWRfc2hhMjU2PzogJy4uLicgfQogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnYnNwL3YzJywgJy90aGVtZS9maWxlLXdyaXRlJywgWwogICAgICAgICdtZXRob2RzJyAgPT4gJ1BPU1QnLAogICAgICAgICdjYWxsYmFjaycgPT4gZnVuY3Rpb24oV1BfUkVTVF9SZXF1ZXN0ICRyZXEpIHVzZSAoJGFsbG93ZWRfcGF0aHMpIHsKICAgICAgICAgICAgJHJlbCA9IHNhbml0aXplX3RleHRfZmllbGQoJHJlcS0+Z2V0X3BhcmFtKCdyZWxwYXRoJykpOwogICAgICAgICAgICBpZiAoIWluX2FycmF5KCRyZWwsICRhbGxvd2VkX3BhdGhzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignZGlzYWxsb3dlZF9wYXRoJywgJ1BhdGggbm90IHdoaXRlbGlzdGVkJywgWydzdGF0dXMnID0+IDQwMF0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb250ZW50ID0gJHJlcS0+Z2V0X3BhcmFtKCdjb250ZW50Jyk7CiAgICAgICAgICAgIGlmICgkY29udGVudCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignbWlzc2luZ19jb250ZW50JywgJ2NvbnRlbnQgcGFyYW0gcmVxdWlyZWQnLCBbJ3N0YXR1cycgPT4gNDAwXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gNTBNQiBoYXJkIGNhcCB0byBwcm90ZWN0IGFnYWluc3QgcnVuYXdheSBwYXlsb2FkcwogICAgICAgICAgICBpZiAoc3RybGVuKCRjb250ZW50KSA+IDUwICogMTAyNCAqIDEwMjQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ3Rvb19sYXJnZScsICdjb250ZW50ID41ME1CJywgWydzdGF0dXMnID0+IDQxM10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYXRoID0gdHJhaWxpbmdzbGFzaGl0KGdldF9zdHlsZXNoZWV0X2RpcmVjdG9yeSgpKSAuICRyZWw7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL2ZpbGUucGhwJzsKICAgICAgICAgICAgV1BfRmlsZXN5c3RlbSgpOwogICAgICAgICAgICBnbG9iYWwgJHdwX2ZpbGVzeXN0ZW07CiAgICAgICAgICAgIC8vIHB1dF9jb250ZW50cyB3cml0ZXMgdG8gLndwLXRlbXAte2hhc2h9IHRoZW4gcmVuYW1lcyAtPiBQT1NJWCBhdG9taWMKICAgICAgICAgICAgLy8gTm8gZ2V0X2NvbnRlbnRzIGNhbGwgLT4gbm8gcmVhZC10aGVuLXdyaXRlIGRvdWJsaW5nCiAgICAgICAgICAgICRvayA9ICR3cF9maWxlc3lzdGVtLT5wdXRfY29udGVudHMoJHBhdGgsICRjb250ZW50LCBGU19DSE1PRF9GSUxFKTsKICAgICAgICAgICAgaWYgKCEkb2spIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ3dyaXRlX2ZhaWxlZCcsICdwdXRfY29udGVudHMgcmV0dXJuZWQgZmFsc2UnLCBbJ3N0YXR1cycgPT4gNTAwXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gVmVyaWZ5IG9uLWRpc2sgc2l6ZSBtYXRjaGVzIHdoYXQgd2Ugd3JvdGUKICAgICAgICAgICAgY2xlYXJzdGF0Y2FjaGUodHJ1ZSwgJHBhdGgpOwogICAgICAgICAgICAkb25fZGlza19zaXplID0gZmlsZXNpemUoJHBhdGgpOwogICAgICAgICAgICAkb25fZGlza19zaGEgPSBoYXNoX2ZpbGUoJ3NoYTI1NicsICRwYXRoKTsKICAgICAgICAgICAgLy8gRmlyZSBjYWNoZSBwdXJnZXMKICAgICAgICAgICAgZG9fYWN0aW9uKCdsaXRlc3BlZWRfcHVyZ2VfYWxsJyk7CiAgICAgICAgICAgIHdwX2NhY2hlX2ZsdXNoKCk7CiAgICAgICAgICAgIC8vIE9wdGlvbmFsIHNoYTI1NiB2ZXJpZmljYXRpb24gYnkgY2xpZW50CiAgICAgICAgICAgICRleHBlY3RlZCA9ICRyZXEtPmdldF9wYXJhbSgnZXhwZWN0ZWRfc2hhMjU2Jyk7CiAgICAgICAgICAgICRzaGFfbWF0Y2ggPSAoJGV4cGVjdGVkID09PSBudWxsKSA/IG51bGwgOiAoJG9uX2Rpc2tfc2hhID09PSAkZXhwZWN0ZWQpOwogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICdyZWxwYXRoJyAgICAgID0+ICRyZWwsCiAgICAgICAgICAgICAgICAncGF0aCcgICAgICAgICA9PiAkcGF0aCwKICAgICAgICAgICAgICAgICdieXRlc193cml0dGVuJz0+IHN0cmxlbigkY29udGVudCksCiAgICAgICAgICAgICAgICAnb25fZGlza19ieXRlcyc9PiAkb25fZGlza19zaXplLAogICAgICAgICAgICAgICAgJ3NoYTI1NicgICAgICAgPT4gJG9uX2Rpc2tfc2hhLAogICAgICAgICAgICAgICAgJ2V4cGVjdGVkX3NoYTI1Nl9tYXRjaCcgPT4gJHNoYV9tYXRjaCwKICAgICAgICAgICAgICAgICdsaXRlc3BlZWRfcHVyZ2VkJyA9PiB0cnVlLAogICAgICAgICAgICAgICAgJ3dwX2NhY2hlX2ZsdXNoZWQnID0+IHRydWUsCiAgICAgICAgICAgIF07CiAgICAgICAgfSwKICAgICAgICAncGVybWlzc2lvbl9jYWxsYmFjaycgPT4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBjdXJyZW50X3VzZXJfY2FuKCdlZGl0X3RoZW1lcycpOwogICAgICAgIH0sCiAgICBdKTsKfSk7CgovLyA9PT0gQlNQIHYzIHRoZW1lIGZpbGUgZW5kcG9pbnRzIChlbmQpID09PQovLyBjYWNoZS1idXN0IDIwMjYwNTA1VDIyMzI1MloKLy8gc3RyaXAtdjItY2FjaGUtYnVzdCAyMDI2MDUwNVQyMjQ3NTdaCi8vIHN0cmlwLUQtY2FjaGUtYnVzdCAyMDI2MDUwNVQyMzAxMjZaCi8vIG9wNC1ibG9jay1jLWdyaWQtZml4LWJ1c3QgMjAyNjA1MDZUMDAyODM4WgovLyBvcDQtaGVscGVyLWNzcy1vcmRlci1maXgtYnVzdCAyMDI2MDUwNlQwMTM2MDFaCgogIC8qKgogICAqIEJTUCBwaWRfMTU3IGhlYWRlciBmaXggdjIgKGNvZGViYXNlIGRvYyBsaW5lIDgyMSBwYXR0ZXJuLCBhcHBsaWVkIHRvIHRlbXBsYXRlIDkzMikuCiAgICogVGhlIEJyaWNrcy1uYXRpdmUgdGVtcGxhdGUgY29uZGl0aW9uIGZvciA5MzIgKCJTaW5ndWxhcjogUGFnZSIpIGRvZXNuJ3QgbWF0Y2gKICAgKiB0aGUgV1AgZnJvbnQtcGFnZSBhcmNoZXR5cGUgKGJvZHkgY2xhc3MgImhvbWUiKSwgc28gb24gcGlkXzE1NyBubyBoZWFkZXIgcmVuZGVycy4KICAgKiBUaGlzIGhvb2sgZm9yY2UtcmVuZGVycyB0ZW1wbGF0ZSA5MzIgYXQgd3BfYm9keV9vcGVuIHByaW9yaXR5IDEg4oCUIE9OTFkgb24gZnJvbnQtcGFnZS4KICAgKiBIZWxwZXIgYnNwX3JlbmRlcl9icmlja3NfdGVtcGxhdGUgcmVhZHMgX2JyaWNrc19wYWdlX2hlYWRlcl8yIGZpcnN0IHBlciBJMiBwYXRjaC4KICAgKiBSZXZlcnNpYmxlOiBkZWxldGUgdGhpcyBlbnRpcmUgYWRkX2FjdGlvbigpIGJsb2NrLgogICAqIEF1dGg6IFJvYmVydCBkaXJlY3RpdmUgMjAyNi0wNS0wNiArIENEIG1zZ183MTFlOTA7IGNvZGViYXNlIGRvYyDCpzZhICsgwqc1MS4KICAgKi8KICBhZGRfYWN0aW9uKCd3cF9ib2R5X29wZW4nLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47CiAgICAgIGlmICghaXNfZnJvbnRfcGFnZSgpKSByZXR1cm47CiAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JzcF9yZW5kZXJfYnJpY2tzX3RlbXBsYXRlJykpIHsKICAgICAgICAgIGJzcF9yZW5kZXJfYnJpY2tzX3RlbXBsYXRlKDkzMiwgJ2hlYWRlcicpOwogICAgICB9CiAgfSwgMSk7CgoKICAvLyBwaWQxNTctaGVhZGVyLWZvcmNlLXJlbmRlci1idXN0IDIwMjYwNTA2VDA1NTAyM1oKCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBCU1AgT3B0aW9uIEJyaWRnZSB2MyDigJQgUkVTVCBzdXJmYWNlIGZvciBCcmlja3MgU3R5bGUgTWFuYWdlciBvcHRpb25zCi8vIENvZGlmaWVkIHBlciBMQVcgwqc4NCAoTWF5IDcgMjAyNikg4oCUIEJTUF9Ccmlja3NfQ29kZWJhc2VfRG9jdW1lbnRhdGlvbi5odG1sCi8vIFJlZmVyZW5jZTogV1AgUkVTVCBBUEkgSGFuZGJvb2sgcGVybWlzc2lvbl9jYWxsYmFjayBwYXR0ZXJucwovLyAgIGh0dHBzOi8vZGV2ZWxvcGVyLndvcmRwcmVzcy5vcmcvcmVzdC1hcGkvZXh0ZW5kaW5nLXRoZS1yZXN0LWFwaS9hZGRpbmctY3VzdG9tLWVuZHBvaW50cy8KLy8gV2hpdGVsaXN0OiBicmlja3NfZ2xvYmFsX2NsYXNzZXMsIGJyaWNrc19nbG9iYWxfdmFyaWFibGVzLCBicmlja3NfdGhlbWVfc3R5bGVzCi8vIFVJQ0hFTVkgcHJlc2VydmF0aW9uIGdhdGU6IHdyaXRlcyB0byBicmlja3NfZ2xvYmFsX2NsYXNzZXMgdGhhdCBkcm9wIGJyeHVjXyoKLy8gICBlbnRyaWVzIGFyZSByZWZ1c2VkIChIVFRQIDQwOSkuIFJvYmVydCBkaXJlY3RpdmUgMjAyNi0wNS0wNy4KLy8gUmV2ZXJzaWJsZTogZGVsZXRlIHRoZSBhZGRfYWN0aW9uKCkgYmxvY2sgKyB0aGUgZm91ciBic3BfdjNfb3B0aW9uXyogZnVuY3Rpb25zLgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYWRkX2FjdGlvbigncmVzdF9hcGlfaW5pdCcsIGZ1bmN0aW9uKCkgewogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnYnNwL3YzJywgJy9vcHRpb24vcmVhZCcsIFsKICAgICAgICAnbWV0aG9kcycgICAgICAgICAgICAgPT4gJ0dFVCcsCiAgICAgICAgJ2NhbGxiYWNrJyAgICAgICAgICAgID0+ICdic3BfdjNfb3B0aW9uX3JlYWQnLAogICAgICAgICdwZXJtaXNzaW9uX2NhbGxiYWNrJyA9PiAnYnNwX3YzX29wdGlvbl9jYXBzJywKICAgIF0pOwogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnYnNwL3YzJywgJy9vcHRpb24vd3JpdGUnLCBbCiAgICAgICAgJ21ldGhvZHMnICAgICAgICAgICAgID0+ICdQT1NUJywKICAgICAgICAnY2FsbGJhY2snICAgICAgICAgICAgPT4gJ2JzcF92M19vcHRpb25fd3JpdGUnLAogICAgICAgICdwZXJtaXNzaW9uX2NhbGxiYWNrJyA9PiAnYnNwX3YzX29wdGlvbl9jYXBzJywKICAgIF0pOwp9KTsKZnVuY3Rpb24gYnNwX3YzX29wdGlvbl9jYXBzKCkgewogICAgcmV0dXJuIGN1cnJlbnRfdXNlcl9jYW4oJ21hbmFnZV9vcHRpb25zJyk7Cn0KZnVuY3Rpb24gYnNwX3YzX29wdGlvbl93aGl0ZWxpc3QoKSB7CiAgICByZXR1cm4gWydicmlja3NfZ2xvYmFsX2NsYXNzZXMnLCAnYnJpY2tzX2dsb2JhbF92YXJpYWJsZXMnLCAnYnJpY2tzX3RoZW1lX3N0eWxlcycsICdicmlja3NfYnJlYWtwb2ludHMnXTsKfQpmdW5jdGlvbiBic3BfdjNfb3B0aW9uX3JlYWQoV1BfUkVTVF9SZXF1ZXN0ICRyZXEpIHsKICAgICRrZXkgPSBzYW5pdGl6ZV9rZXkoKHN0cmluZykgJHJlcS0+Z2V0X3BhcmFtKCdrZXknKSk7CiAgICBpZiAoIWluX2FycmF5KCRrZXksIGJzcF92M19vcHRpb25fd2hpdGVsaXN0KCksIHRydWUpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignbm90X3doaXRlbGlzdGVkJywKICAgICAgICAgICAgc3ByaW50ZigiS2V5ICclcycgbm90IGluIHdoaXRlbGlzdCIsICRrZXkpLCBbJ3N0YXR1cycgPT4gNDAwXSk7CiAgICB9CiAgICAkdmFsID0gZ2V0X29wdGlvbigka2V5LCBudWxsKTsKICAgICRjb3VudCA9IG51bGw7ICRzaGEgPSBudWxsOwogICAgaWYgKGlzX2FycmF5KCR2YWwpKSAgICAgIHsgJGNvdW50ID0gY291bnQoJHZhbCk7ICRzaGEgPSBoYXNoKCdzaGEyNTYnLCB3cF9qc29uX2VuY29kZSgkdmFsKSk7IH0KICAgIGVsc2VpZiAoaXNfc3RyaW5nKCR2YWwpKSB7ICRjb3VudCA9IHN0cmxlbigkdmFsKTsgJHNoYSA9IGhhc2goJ3NoYTI1NicsICR2YWwpOyB9CiAgICByZXR1cm4gWwogICAgICAgICdrZXknICAgID0+ICRrZXksCiAgICAgICAgJ2V4aXN0cycgPT4gJHZhbCAhPT0gbnVsbCAmJiAkdmFsICE9PSBmYWxzZSwKICAgICAgICAndHlwZScgICA9PiBpc19hcnJheSgkdmFsKSA/ICdhcnJheScgOiAoaXNfc3RyaW5nKCR2YWwpID8gJ3N0cmluZycgOiBnZXR0eXBlKCR2YWwpKSwKICAgICAgICAnY291bnQnICA9PiAkY291bnQsCiAgICAgICAgJ3NoYTI1NicgPT4gJHNoYSwKICAgICAgICAndmFsdWUnICA9PiAkdmFsLAogICAgXTsKfQpmdW5jdGlvbiBic3BfdjNfb3B0aW9uX3dyaXRlKFdQX1JFU1RfUmVxdWVzdCAkcmVxKSB7CiAgICAkYm9keSA9ICRyZXEtPmdldF9qc29uX3BhcmFtcygpOwogICAgaWYgKCFpc19hcnJheSgkYm9keSkpIHsKICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdiYWRfYm9keScsICdCb2R5IG11c3QgYmUgSlNPTiBvYmplY3QnLCBbJ3N0YXR1cycgPT4gNDAwXSk7CiAgICB9CiAgICAka2V5ID0gc2FuaXRpemVfa2V5KChzdHJpbmcpICgkYm9keVsna2V5J10gPz8gJycpKTsKICAgIGlmICghaW5fYXJyYXkoJGtleSwgYnNwX3YzX29wdGlvbl93aGl0ZWxpc3QoKSwgdHJ1ZSkpIHsKICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdub3Rfd2hpdGVsaXN0ZWQnLAogICAgICAgICAgICBzcHJpbnRmKCJLZXkgJyVzJyBub3QgaW4gd2hpdGVsaXN0IiwgJGtleSksIFsnc3RhdHVzJyA9PiA0MDBdKTsKICAgIH0KICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygndmFsdWUnLCAkYm9keSkpIHsKICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdtaXNzaW5nX3ZhbHVlJywgIkJvZHkgbXVzdCBpbmNsdWRlICd2YWx1ZSciLCBbJ3N0YXR1cycgPT4gNDAwXSk7CiAgICB9CiAgICAkdmFsdWUgPSAkYm9keVsndmFsdWUnXTsKCiAgICAkcHJlID0gZ2V0X29wdGlvbigka2V5LCBudWxsKTsKICAgICRwcmVfY291bnQgPSBpc19hcnJheSgkcHJlKSA/IGNvdW50KCRwcmUpIDogKGlzX3N0cmluZygkcHJlKSA/IHN0cmxlbigkcHJlKSA6IG51bGwpOwogICAgJHByZV9zaGEgICA9IGlzX2FycmF5KCRwcmUpID8gaGFzaCgnc2hhMjU2Jywgd3BfanNvbl9lbmNvZGUoJHByZSkpCiAgICAgICAgICAgICAgIDogKGlzX3N0cmluZygkcHJlKSA/IGhhc2goJ3NoYTI1NicsICRwcmUpIDogbnVsbCk7CgogICAgaWYgKCRrZXkgPT09ICdicmlja3NfZ2xvYmFsX2NsYXNzZXMnKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkcHJlKSB8fCAhaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdzaGFwZV9pbnZhbGlkJywKICAgICAgICAgICAgICAgICdicmlja3NfZ2xvYmFsX2NsYXNzZXMgcmVxdWlyZXMgYXJyYXkgc2hhcGUnLCBbJ3N0YXR1cycgPT4gNDAwXSk7CiAgICAgICAgfQogICAgICAgICRjb3VudF91aWMgPSBmdW5jdGlvbigkYXJyKSB7CiAgICAgICAgICAgICRuID0gMDsKICAgICAgICAgICAgZm9yZWFjaCAoJGFyciBhcyAkZW50cnkpIHsKICAgICAgICAgICAgICAgICRuYW1lID0gaXNfYXJyYXkoJGVudHJ5KSA/IChzdHJpbmcpICgkZW50cnlbJ25hbWUnXSA/PyAnJykgOiAnJzsKICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJG5hbWUsICdicnh1Y18nKSA9PT0gMCkgJG4rKzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJG47CiAgICAgICAgfTsKICAgICAgICAkcHJlX3VpYyA9ICRjb3VudF91aWMoJHByZSk7CiAgICAgICAgJGluY191aWMgPSAkY291bnRfdWljKCR2YWx1ZSk7CiAgICAgICAgaWYgKCRpbmNfdWljIDwgJHByZV91aWMpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcigndWljaGVteV9sb3NzJywgc3ByaW50ZigKICAgICAgICAgICAgICAgICdVSUNIRU1ZIHByZXNlcnZhdGlvbiBnYXRlOiBwcmU9JWQgaW5jb21pbmc9JWQuIFJlZnVzaW5nIHRvIGRyb3AgVUlDSEVNWSBlbnRyaWVzLicsCiAgICAgICAgICAgICAgICAkcHJlX3VpYywgJGluY191aWMpLCBbJ3N0YXR1cycgPT4gNDA5XSk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghZW1wdHkoJGJvZHlbJ2RyeV9ydW4nXSkpIHsKICAgICAgICAkcG9zdF9jb3VudCA9IGlzX2FycmF5KCR2YWx1ZSkgPyBjb3VudCgkdmFsdWUpIDogKGlzX3N0cmluZygkdmFsdWUpID8gc3RybGVuKCR2YWx1ZSkgOiBudWxsKTsKICAgICAgICAkcG9zdF9zaGEgPSBpc19hcnJheSgkdmFsdWUpID8gaGFzaCgnc2hhMjU2Jywgd3BfanNvbl9lbmNvZGUoJHZhbHVlKSkKICAgICAgICAgICAgICAgICAgIDogKGlzX3N0cmluZygkdmFsdWUpID8gaGFzaCgnc2hhMjU2JywgJHZhbHVlKSA6IG51bGwpOwogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdrZXknID0+ICRrZXksICdkcnlfcnVuJyA9PiB0cnVlLCAnd3JvdGUnID0+IGZhbHNlLAogICAgICAgICAgICAncHJlX2NvdW50JyA9PiAkcHJlX2NvdW50LCAncHJlX3NoYScgPT4gJHByZV9zaGEsCiAgICAgICAgICAgICdwb3N0X2NvdW50JyA9PiAkcG9zdF9jb3VudCwgJ3Bvc3Rfc2hhJyA9PiAkcG9zdF9zaGEsCiAgICAgICAgICAgICdzaGFfY2hhbmdlZCcgPT4gJHByZV9zaGEgIT09ICRwb3N0X3NoYSwKICAgICAgICBdOwogICAgfQoKICAgICRvayA9IHVwZGF0ZV9vcHRpb24oJGtleSwgJHZhbHVlKTsKICAgICRwb3N0ID0gZ2V0X29wdGlvbigka2V5LCBudWxsKTsKICAgICRwb3N0X2NvdW50ID0gaXNfYXJyYXkoJHBvc3QpID8gY291bnQoJHBvc3QpIDogKGlzX3N0cmluZygkcG9zdCkgPyBzdHJsZW4oJHBvc3QpIDogbnVsbCk7CiAgICAkcG9zdF9zaGEgICA9IGlzX2FycmF5KCRwb3N0KSA/IGhhc2goJ3NoYTI1NicsIHdwX2pzb25fZW5jb2RlKCRwb3N0KSkKICAgICAgICAgICAgICAgIDogKGlzX3N0cmluZygkcG9zdCkgPyBoYXNoKCdzaGEyNTYnLCAkcG9zdCkgOiBudWxsKTsKCiAgICBpZiAoJG9rKSB7CiAgICAgICAgZG9fYWN0aW9uKCdsaXRlc3BlZWRfcHVyZ2VfYWxsJyk7CiAgICAgICAgd3BfY2FjaGVfZmx1c2goKTsKICAgIH0KCiAgICByZXR1cm4gWwogICAgICAgICdrZXknID0+ICRrZXksICd3cm90ZScgPT4gKGJvb2wpICRvaywKICAgICAgICAncHJlX2NvdW50JyA9PiAkcHJlX2NvdW50LCAncG9zdF9jb3VudCcgPT4gJHBvc3RfY291bnQsCiAgICAgICAgJ3ByZV9zaGEnID0+ICRwcmVfc2hhLCAncG9zdF9zaGEnID0+ICRwb3N0X3NoYSwKICAgICAgICAnc2hhX2NoYW5nZWQnID0+ICRwcmVfc2hhICE9PSAkcG9zdF9zaGEsCiAgICBdOwp9Ci8vIEVORCBCU1AgT3B0aW9uIEJyaWRnZSB2MwoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEJTUCBQb3N0bWV0YSBCcmlkZ2UgdjMg4oCUIHJlYWQgYW55IHdoaXRlbGlzdGVkIHBvc3QgbWV0YV9rZXkgKDIwMjYtMDUtMDgpCi8vIFJlYXNvbjogYnNwL3YyL2RiLyogZW5kcG9pbnRzIGFyZSBjb250ZW50LW9ubHkgKGhhcmRjb2RlZCBfYnJpY2tzX3BhZ2VfY29udGVudF8yKS4KLy8gQnJpY2tzIGhlYWRlciB0ZW1wbGF0ZXMgc3RvcmUgZWxlbWVudCB0cmVlcyBpbiBfYnJpY2tzX3BhZ2VfaGVhZGVyXzIg4oCUIGludmlzaWJsZQovLyB0byB0aGUgZXhpc3Rpbmcgc3VyZmFjZS4gQ29kZWJhc2UgZG9jIMKnODcgZG9jdW1lbnRzIHRoZSBnYXAuCi8vIFdoaXRlbGlzdCBlbmZvcmNlcyBzYWZlIHJlYWQgc2NvcGUgKEJyaWNrcy1vbmx5IG1ldGEga2V5cywgbm8gdXNlci9zZWNyZXQgZGF0YSkuCi8vIFJldmVyc2libGU6IGRlbGV0ZSB0aGUgYWRkX2FjdGlvbiBibG9jayArIHRoZSBic3BfdjNfcG9zdG1ldGFfKiBmdW5jdGlvbnMuCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQphZGRfYWN0aW9uKCdyZXN0X2FwaV9pbml0JywgZnVuY3Rpb24oKSB7CiAgICByZWdpc3Rlcl9yZXN0X3JvdXRlKCdic3AvdjMnLCAnL3Bvc3RtZXRhL3JlYWQnLCBbCiAgICAgICAgJ21ldGhvZHMnICAgICAgICAgICAgID0+ICdHRVQnLAogICAgICAgICdjYWxsYmFjaycgICAgICAgICAgICA9PiAnYnNwX3YzX3Bvc3RtZXRhX3JlYWQnLAogICAgICAgICdwZXJtaXNzaW9uX2NhbGxiYWNrJyA9PiAnYnNwX3YzX3Bvc3RtZXRhX2NhcHMnLAogICAgXSk7Cn0pOwpmdW5jdGlvbiBic3BfdjNfcG9zdG1ldGFfY2FwcygpIHsKICAgIHJldHVybiBjdXJyZW50X3VzZXJfY2FuKCdtYW5hZ2Vfb3B0aW9ucycpOwp9CmZ1bmN0aW9uIGJzcF92M19wb3N0bWV0YV93aGl0ZWxpc3QoKSB7CiAgICByZXR1cm4gWwogICAgICAgICdfYnJpY2tzX3BhZ2VfY29udGVudF8yJywKICAgICAgICAnX2JyaWNrc19wYWdlX2hlYWRlcl8yJywKICAgICAgICAnX2JyaWNrc19wYWdlX2Zvb3Rlcl8yJywKICAgICAgICAnX2JyaWNrc19wYWdlX3NldHRpbmdzJywKICAgICAgICAnX2JyaWNrc190ZW1wbGF0ZV90eXBlJywKICAgICAgICAnX2JyaWNrc190ZW1wbGF0ZV9jb25kaXRpb25zJywKICAgICAgICAnX2JyaWNrc190ZW1wbGF0ZV9zZXR0aW5ncycsCiAgICAgICAgJ19icmlja3NfZWRpdG9yX21vZGUnLAogICAgXTsKfQpmdW5jdGlvbiBic3BfdjNfcG9zdG1ldGFfcmVhZChXUF9SRVNUX1JlcXVlc3QgJHJlcSkgewogICAgJHBpZCA9IChpbnQpICRyZXEtPmdldF9wYXJhbSgncGlkJyk7CiAgICAka2V5ID0gc2FuaXRpemVfdGV4dF9maWVsZCgoc3RyaW5nKSAkcmVxLT5nZXRfcGFyYW0oJ21ldGFfa2V5JykpOwogICAgaWYgKCRwaWQgPD0gMCkgewogICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ2JhZF9waWQnLCAncGlkIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJywgWydzdGF0dXMnID0+IDQwMF0pOwogICAgfQogICAgaWYgKCFpbl9hcnJheSgka2V5LCBic3BfdjNfcG9zdG1ldGFfd2hpdGVsaXN0KCksIHRydWUpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignbm90X3doaXRlbGlzdGVkJywKICAgICAgICAgICAgc3ByaW50ZigibWV0YV9rZXkgJyVzJyBub3QgaW4gd2hpdGVsaXN0IiwgJGtleSksIFsnc3RhdHVzJyA9PiA0MDBdKTsKICAgIH0KICAgIGlmICghZ2V0X3Bvc3QoJHBpZCkpIHsKICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdwb3N0X25vdF9mb3VuZCcsCiAgICAgICAgICAgIHNwcmludGYoJ3Bvc3QgJWQgbm90IGZvdW5kJywgJHBpZCksIFsnc3RhdHVzJyA9PiA0MDRdKTsKICAgIH0KICAgICR2YWwgPSBnZXRfcG9zdF9tZXRhKCRwaWQsICRrZXksIHRydWUpOwogICAgJGV4aXN0cyA9ICgkdmFsICE9PSAnJyAmJiAkdmFsICE9PSBmYWxzZSAmJiAkdmFsICE9PSBudWxsKTsKICAgICRzaXplID0gaXNfYXJyYXkoJHZhbCkgPyBudWxsIDogc3RybGVuKChzdHJpbmcpICR2YWwpOwogICAgJGNvdW50ID0gaXNfYXJyYXkoJHZhbCkgPyBjb3VudCgkdmFsKSA6IG51bGw7CiAgICAkc2hhID0gaXNfYXJyYXkoJHZhbCkgPyBoYXNoKCdzaGEyNTYnLCB3cF9qc29uX2VuY29kZSgkdmFsKSkgOiBoYXNoKCdzaGEyNTYnLCAoc3RyaW5nKSAkdmFsKTsKCiAgICAvLyBPcHRpb25hbGx5IHBhcnNlIGFzIEpTT04gd2hlbiB2YWx1ZSBpcyBhIHN0cmluZyBzdGFydGluZyB3aXRoIFsgb3IgewogICAgJHBhcnNlZCA9IG51bGw7CiAgICAkcGFyc2VkX2NvdW50ID0gbnVsbDsKICAgIGlmIChpc19zdHJpbmcoJHZhbCkgJiYgc3RybGVuKCR2YWwpID4gMCkgewogICAgICAgICRmaXJzdCA9IHN1YnN0cihsdHJpbSgkdmFsKSwgMCwgMSk7CiAgICAgICAgaWYgKCRmaXJzdCA9PT0gJ1snIHx8ICRmaXJzdCA9PT0gJ3snKSB7CiAgICAgICAgICAgICR0bXAgPSBqc29uX2RlY29kZSgkdmFsLCB0cnVlKTsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR0bXApKSB7CiAgICAgICAgICAgICAgICAkcGFyc2VkID0gJHRtcDsKICAgICAgICAgICAgICAgICRwYXJzZWRfY291bnQgPSBjb3VudCgkdG1wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gWwogICAgICAgICdwaWQnICAgICAgICAgID0+ICRwaWQsCiAgICAgICAgJ21ldGFfa2V5JyAgICAgPT4gJGtleSwKICAgICAgICAnZXhpc3RzJyAgICAgICA9PiAkZXhpc3RzLAogICAgICAgICd0eXBlJyAgICAgICAgID0+IGlzX2FycmF5KCR2YWwpID8gJ2FycmF5JyA6IGdldHR5cGUoJHZhbCksCiAgICAgICAgJ3NpemUnICAgICAgICAgPT4gJHNpemUsCiAgICAgICAgJ2NvdW50JyAgICAgICAgPT4gJGNvdW50LAogICAgICAgICdzaGEyNTYnICAgICAgID0+ICRzaGEsCiAgICAgICAgJ3ZhbHVlJyAgICAgICAgPT4gJHZhbCwKICAgICAgICAncGFyc2VkJyAgICAgICA9PiAkcGFyc2VkLAogICAgICAgICdwYXJzZWRfY291bnQnID0+ICRwYXJzZWRfY291bnQsCiAgICBdOwp9Ci8vIEVORCBCU1AgUG9zdG1ldGEgQnJpZGdlIHYzCgoKCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBCU1AgTG9jYXRpb24gUGFnZSBIZWxwZXIgKyBib2R5X2NsYXNzIEZpbHRlciAowqc4NS5BIHJlc3RvcmF0aW9uLCAyMDI2LTA1LTA3KQovLyBSZXN0b3JlcyBBcHIgMjQgY2Fub25pY2FsIEwxIGxheWVyIHRoYXQgZHJpZnRlZCBwb3N0LUFwciAyOSBzdHJhdGVneSBzaGlmdC4KLy8gSEVMUEVSIE1VU1QgQkUgREVGSU5FRCBCRUZPUkUgRklMVEVSIFJFR0lTVFJBVElPTiAoQXByIDI5IHNpbGVudC1mYXRhbCBnb3RjaGEpLgovLyBDb2RpZmllZCBwZXIgTEFXIMKnODUgaW4gQlNQX0JyaWNrc19Db2RlYmFzZV9Eb2N1bWVudGF0aW9uLmh0bWwuCi8vIFJldmVyc2libGU6IGRlbGV0ZSB0aGlzIGVudGlyZSBibG9jayAoaGVscGVyICsgZmlsdGVyKS4KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmZ1bmN0aW9uIGJzcF9sb2NhdGlvbl9wYWdlX3BpZHMoKSB7CiAgICByZXR1cm4gWzI1OCwgMjg1LCAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsIDMzM107Cn0KYWRkX2ZpbHRlcignYm9keV9jbGFzcycsIGZ1bmN0aW9uKCRjbGFzc2VzKSB7CiAgICBpZiAoaXNfc2luZ3VsYXIoKSAmJiBpbl9hcnJheShnZXRfdGhlX0lEKCksIGJzcF9sb2NhdGlvbl9wYWdlX3BpZHMoKSwgdHJ1ZSkpIHsKICAgICAgICAkY2xhc3Nlc1tdID0gJ2JzcC1sb2NhdGlvbi1wYWdlJzsKICAgIH0KICAgIHJldHVybiAkY2xhc3NlczsKfSk7Ci8vIEVORCBCU1AgTG9jYXRpb24gUGFnZSBIZWxwZXIKCgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gQlNQIExvY2F0aW9uIFBhZ2UgRkFRIEFjY29yZGlvbiAowqc4NS5FLjkg4oCUIHYzLCBNYXkgNyAyMDI2KQovLyB2MyBmaXg6IFErQSBXUkFQUEVSIGNvbnRhaW5lciBicnhlLWlkICsgRE9NIHdhbGsgZm9yIGgzL3AgaW5zaWRlLgovLyAgIERpc2NvdmVyeTogQnJpY2tzIGVtaXRzIGJyeGUte2lkfSBpbmNvbnNpc3RlbnRseSAob25seSBvbiBlbGVtZW50cwovLyAgIHdpdGggcGVyLWVsZW1lbnQgQ1NTIHJ1bGVzKS4gUStBIHdyYXBwZXIgY29udGFpbmVycyAob3AxMjBmLCBvcDEyM2YsCi8vICAgb3AxMjZmLCBvcDEyOWYsIG9wMTMyZiwgb3AxMzVmKSBhbGwgY2FycnkgYnJ4ZS1pZCByZWxpYWJseS4KLy8gUmV2ZXJzaWJsZTogZGVsZXRlIHRoaXMgZW50aXJlIGFkZF9hY3Rpb24oKSBibG9jay4KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7CiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsKICAgIGlmICghaXNfc2luZ3VsYXIoKSkgcmV0dXJuOwogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2JzcF9sb2NhdGlvbl9wYWdlX3BpZHMnKSkgcmV0dXJuOwogICAgaWYgKCFpbl9hcnJheShnZXRfdGhlX0lEKCksIGJzcF9sb2NhdGlvbl9wYWdlX3BpZHMoKSwgdHJ1ZSkpIHJldHVybjsKICAgID8+CjxzY3JpcHQgaWQ9ImJzcC1sb2NhdGlvbi1mYXEtYWNjb3JkaW9uLXYzIj4KKGZ1bmN0aW9uKCl7CiAgaWYgKHdpbmRvdy5fX2JzcEZhcUFjY29yZGlvbkluaXRWMykgcmV0dXJuOyB3aW5kb3cuX19ic3BGYXFBY2NvcmRpb25Jbml0VjMgPSB0cnVlOwogIHZhciBjb250YWluZXJzID0gWydvcDEyMGYnLCdvcDEyM2YnLCdvcDEyNmYnLCdvcDEyOWYnLCdvcDEzMmYnLCdvcDEzNWYnXTsKICBmdW5jdGlvbiBzZXR1cCgpewogICAgY29udGFpbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGNpZCl7CiAgICAgIHZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JyeGUtJyArIGNpZCk7CiAgICAgIGlmICghYyB8fCBjLmRhdGFzZXQuYnNwRmFxV2lyZWQpIHJldHVybjsKICAgICAgdmFyIHEgPSBjLnF1ZXJ5U2VsZWN0b3IoJ2gzJyk7CiAgICAgIHZhciBhID0gYy5xdWVyeVNlbGVjdG9yKCdwJyk7CiAgICAgIGlmICghcSB8fCAhYSkgcmV0dXJuOwogICAgICBjLmRhdGFzZXQuYnNwRmFxV2lyZWQgPSAnMSc7CiAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgcS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7CiAgICAgIHEuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2J1dHRvbicpOwogICAgICBxLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpOwogICAgICBxLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwogICAgICBmdW5jdGlvbiB0b2dnbGUoKXsKICAgICAgICB2YXIgb3BlbiA9IGEuc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnOwogICAgICAgIGEuc3R5bGUuZGlzcGxheSA9IG9wZW4gPyAnbm9uZScgOiAnYmxvY2snOwogICAgICAgIHEuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgU3RyaW5nKCFvcGVuKSk7CiAgICAgIH0KICAgICAgcS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZSk7CiAgICAgIHEuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpewogICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7IGUucHJldmVudERlZmF1bHQoKTsgdG9nZ2xlKCk7IH0KICAgICAgfSk7CiAgICB9KTsKICB9CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHNldHVwKTsKICB9IGVsc2UgewogICAgc2V0dXAoKTsKICB9Cn0pKCk7Cjwvc2NyaXB0PgogICAgPD9waHAKfSwgOTk5KTsKLy8gRU5EIEJTUCBMb2NhdGlvbiBQYWdlIEZBUSBBY2NvcmRpb24K /* ================================================================ * BSP v3 — postmeta + page create/rename endpoints (added 2026-05-14) * Required for migration writer (staging Bricks pages -> prod via REST). * ================================================================ */ add_action('rest_api_init', function () { register_rest_route('bsp/v3', '/postmeta/write', array( 'methods' => 'POST', 'permission_callback' => function () { return current_user_can('edit_pages'); }, 'callback' => function (WP_REST_Request $req) { $body = $req->get_json_params(); $post_id = isset($body['post_id']) ? intval($body['post_id']) : 0; $meta_key = isset($body['meta_key']) ? sanitize_text_field($body['meta_key']) : ''; $meta_value = isset($body['meta_value']) ? $body['meta_value'] : null; if (!$post_id || !$meta_key) return new WP_Error('bad_request', 'post_id + meta_key required', array('status'=>400)); if (!get_post($post_id)) return new WP_Error('not_found', "post_id $post_id missing", array('status'=>404)); $result = update_post_meta($post_id, $meta_key, $meta_value); $stored = get_post_meta($post_id, $meta_key, true); return rest_ensure_response(array( 'ok' => true, 'post_id' => $post_id, 'meta_key' => $meta_key, 'updated' => (bool) $result, 'sha256' => hash('sha256', maybe_serialize($stored)), 'bytes' => strlen(maybe_serialize($stored)), 'is_array'=> is_array($stored), 'count' => is_array($stored) ? count($stored) : null, )); }, )); register_rest_route('bsp/v3', '/page/create', array( 'methods' => 'POST', 'permission_callback' => function () { return current_user_can('publish_pages'); }, 'callback' => function (WP_REST_Request $req) { $body = $req->get_json_params(); $title = isset($body['title']) ? sanitize_text_field($body['title']) : ''; $slug = isset($body['slug']) ? sanitize_title($body['slug']) : ''; $status = isset($body['status']) ? sanitize_text_field($body['status']) : 'publish'; if (!$slug) return new WP_Error('bad_request', 'slug required', array('status'=>400)); $existing = get_page_by_path($slug); if ($existing) return rest_ensure_response(array('ok'=>true,'created'=>false,'post_id'=>$existing->ID,'existing'=>true)); $pid = wp_insert_post(array('post_title'=>($title?:$slug),'post_name'=>$slug,'post_status'=>$status,'post_type'=>'page','post_content'=>'')); if (is_wp_error($pid)) return $pid; return rest_ensure_response(array('ok'=>true,'created'=>true,'post_id'=>$pid,'slug'=>$slug)); }, )); register_rest_route('bsp/v3', '/page/rename', array( 'methods' => 'POST', 'permission_callback' => function () { return current_user_can('edit_pages'); }, 'callback' => function (WP_REST_Request $req) { $body = $req->get_json_params(); $post_id = isset($body['post_id']) ? intval($body['post_id']) : 0; $new_slug = isset($body['new_slug']) ? sanitize_title($body['new_slug']) : ''; if (!$post_id || !$new_slug) return new WP_Error('bad_request', 'post_id + new_slug required', array('status'=>400)); $result = wp_update_post(array('ID'=>$post_id,'post_name'=>$new_slug,'post_status'=>'publish'), true); if (is_wp_error($result)) return $result; $post = get_post($post_id); return rest_ensure_response(array('ok'=>true,'post_id'=>$post_id,'slug'=>$post->post_name,'status'=>$post->post_status)); }, )); }); add_action('rest_api_init', function () { register_rest_route('bsp/v3', '/postmeta/write', array( 'methods' => 'POST', 'permission_callback' => function () { return current_user_can('edit_pages'); }, 'callback' => function (WP_REST_Request $req) { $body = $req->get_json_params(); $post_id = isset($body['post_id']) ? intval($body['post_id']) : 0; $meta_key = isset($body['meta_key']) ? sanitize_text_field($body['meta_key']) : ''; $meta_value = isset($body['meta_value']) ? $body['meta_value'] : null; if (!$post_id || !$meta_key) return new WP_Error('bad_request', 'post_id + meta_key required', array('status'=>400)); if (!get_post($post_id)) return new WP_Error('not_found', "post_id $post_id missing", array('status'=>404)); $result = update_post_meta($post_id, $meta_key, $meta_value); $stored = get_post_meta($post_id, $meta_key, true); return rest_ensure_response(array( 'ok' => true, 'post_id' => $post_id, 'meta_key' => $meta_key, 'updated' => (bool) $result, 'sha256' => hash('sha256', maybe_serialize($stored)), 'bytes' => strlen(maybe_serialize($stored)), 'is_array'=> is_array($stored), 'count' => is_array($stored) ? count($stored) : null, )); }, )); register_rest_route('bsp/v3', '/page/create', array( 'methods' => 'POST', 'permission_callback' => function () { return current_user_can('publish_pages'); }, 'callback' => function (WP_REST_Request $req) { $body = $req->get_json_params(); $title = isset($body['title']) ? sanitize_text_field($body['title']) : ''; $slug = isset($body['slug']) ? sanitize_title($body['slug']) : ''; $status = isset($body['status']) ? sanitize_text_field($body['status']) : 'publish'; if (!$slug) return new WP_Error('bad_request', 'slug required', array('status'=>400)); $existing = get_page_by_path($slug); if ($existing) return rest_ensure_response(array('ok'=>true,'created'=>false,'post_id'=>$existing->ID,'existing'=>true)); $pid = wp_insert_post(array('post_title'=>($title?:$slug),'post_name'=>$slug,'post_status'=>$s tatus,'post_type'=>'page','post_content'=>'')); if (is_wp_error($pid)) return $pid; return rest_ensure_response(array('ok'=>true,'created'=>true,'post_id'=>$pid,'slug'=>$slug)); }, )); register_rest_route('bsp/v3', '/page/rename', array( 'methods' => 'POST', 'permission_callback' => function () { return current_user_can('edit_pages'); }, 'callback' => function (WP_REST_Request $req) { $body = $req->get_json_params(); $post_id = isset($body['post_id']) ? intval($body['post_id']) : 0; $new_slug = isset($body['new_slug']) ? sanitize_title($body['new_slug']) : ''; if (!$post_id || !$new_slug) return new WP_Error('bad_request', 'post_id + new_slug required', array('status'=>400)); $result = wp_update_post(array('ID'=>$post_id,'post_name'=>$new_slug,'post_status'=>'publish'), true); if (is_wp_error($result)) return $result; $post = get_post($post_id); return rest_ensure_response(array('ok'=>true,'post_id'=>$post_id,'slug'=>$post->post_name,'sta tus'=>$post->post_status)); }, )); }); /* ================================================================ * END BSP v3 migration endpoints * ================================================================ */ https://www.callbrightside.com/service-areas/ 2025-06-13T03:37:28+00:00 https://www.callbrightside.com/service-areas/plumber-fairway-ks/ 2025-06-13T03:37:28+00:00 https://www.callbrightside.com/wp-content/uploads/2024/02/fairway.jpg https://www.callbrightside.com/service-areas/plumber-overland-park-ks/ 2023-09-19T07:17:25+00:00 https://www.callbrightside.com/service-areas/plumber-merriam-ks/ 2023-08-01T15:04:56+00:00 https://www.callbrightside.com/service-areas/plumber-lenexa-ks/ 2023-07-20T21:19:50+00:00 https://www.callbrightside.com/service-areas/plumber-kansas-city-ks/ 2023-07-20T21:18:52+00:00 https://www.callbrightside.com/service-areas/plumber-olathe-ks/ 2023-07-20T21:18:24+00:00 https://www.callbrightside.com/service-areas/plumber-shawnee-ks/ 2023-07-20T21:17:50+00:00 https://www.callbrightside.com/service-areas/plumber-mission-ks/ 2023-07-20T21:17:18+00:00 https://www.callbrightside.com/service-areas/plumber-roeland-park-ks/ 2023-07-20T21:16:43+00:00 https://www.callbrightside.com/service-areas/plumber-prairie-village-ks/ 2023-07-20T21:16:03+00:00 https://www.callbrightside.com/service-areas/plumber-lees-summit-mo/ 2023-07-20T21:15:23+00:00 https://www.callbrightside.com/service-areas/plumber-kansas-city-mo/ 2023-07-20T21:14:25+00:00 https://www.callbrightside.com/service-areas/plumber-grandview-mo/ 2023-07-20T21:13:32+00:00 https://www.callbrightside.com/service-areas/plumber-leawood-ks/ 2023-07-20T21:12:30+00:00 https://www.callbrightside.com/service-areas/plumber-mission-hills-ks/ 2023-07-20T21:11:46+00:00