1778987833
441d63ebbc39eba359c9061ece8482bd-phpdoc%3Ac99cd650bf0a7dc3600ad597982ead97-6ec1009c9131dc6ffca3b90384e0ce0b
s:24476:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE5OiJlcnJvcl9leGNlcHRpb24ucGhwIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWVzcGFjZXMiO2E6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6IjZlYzEwMDljOTEzMWRjNmZmY2EzYjkwMzg0ZTBjZTBiIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NDE6ImFwcC9WaWV3cy9lcnJvcnMvaHRtbC9lcnJvcl9leGNlcHRpb24ucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czoxNzQyNzoiPD9waHANCnVzZSBDb2RlSWduaXRlclxIVFRQXEhlYWRlcjsNCnVzZSBDb2RlSWduaXRlclxDb2RlSWduaXRlcjsNCg0KJGVycm9ySWQgPSB1bmlxaWQoJ2Vycm9yJywgdHJ1ZSk7DQo/Pg0KPCFkb2N0eXBlIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4NCiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgiPg0KDQogICAgPHRpdGxlPjw/PSBlc2MoJHRpdGxlKSA/PjwvdGl0bGU+DQogICAgPHN0eWxlPg0KICAgICAgICA8Pz0gcHJlZ19yZXBsYWNlKCcjW1xyXG5cdCBdKyMnLCAnICcsIGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2RlYnVnLmNzcycpKSA/Pg0KICAgIDwvc3R5bGU+DQoNCiAgICA8c2NyaXB0Pg0KICAgICAgICA8Pz0gZmlsZV9nZXRfY29udGVudHMoX19ESVJfXyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnZGVidWcuanMnKSA/Pg0KICAgIDwvc2NyaXB0Pg0KPC9oZWFkPg0KPGJvZHkgb25sb2FkPSJpbml0KCkiPg0KDQogICAgPCEtLSBIZWFkZXIgLS0+DQogICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4NCiAgICAgICAgPGRpdiBjbGFzcz0iZW52aXJvbm1lbnQiPg0KICAgICAgICAgICAgRGlzcGxheWVkIGF0IDw/PSBlc2MoZGF0ZSgnSDppOnMnKSkgPz4gJm1kYXNoOw0KICAgICAgICAgICAgUEhQOiA8Pz0gZXNjKFBIUF9WRVJTSU9OKSA/PiAgJm1kYXNoOw0KICAgICAgICAgICAgQ29kZUlnbml0ZXI6IDw/PSBlc2MoQ29kZUlnbml0ZXI6OkNJX1ZFUlNJT04pID8+IC0tDQogICAgICAgICAgICBFbnZpcm9ubWVudDogPD89IEVOVklST05NRU5UID8+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICAgICAgPGgxPjw/PSBlc2MoJHRpdGxlKSwgZXNjKCRleGNlcHRpb24tPmdldENvZGUoKSA/ICcgIycgLiAkZXhjZXB0aW9uLT5nZXRDb2RlKCkgOiAnJykgPz48L2gxPg0KICAgICAgICAgICAgPHA+DQogICAgICAgICAgICAgICAgPD89IG5sMmJyKGVzYygkZXhjZXB0aW9uLT5nZXRNZXNzYWdlKCkpKSA/Pg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmR1Y2tkdWNrZ28uY29tLz9xPTw/PSB1cmxlbmNvZGUoJHRpdGxlIC4gJyAnIC4gcHJlZ19yZXBsYWNlKCcjXCcuKlwnfCIuKiIjVXMnLCAnJywgJGV4Y2VwdGlvbi0+Z2V0TWVzc2FnZSgpKSkgPz4iDQogICAgICAgICAgICAgICAgICAgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+c2VhcmNoICZyYXJyOzwvYT4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQoNCiAgICA8IS0tIFNvdXJjZSAtLT4NCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICA8cD48Yj48Pz0gZXNjKGNsZWFuX3BhdGgoJGZpbGUpKSA/PjwvYj4gYXQgbGluZSA8Yj48Pz0gZXNjKCRsaW5lKSA/PjwvYj48L3A+DQoNCiAgICAgICAgPD9waHAgaWYgKGlzX2ZpbGUoJGZpbGUpKSA6ID8+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzb3VyY2UiPg0KICAgICAgICAgICAgICAgIDw/PSBzdGF0aWM6OmhpZ2hsaWdodEZpbGUoJGZpbGUsICRsaW5lLCAxNSk7ID8+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgPC9kaXY+DQoNCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICA8P3BocA0KICAgICAgICAkbGFzdCA9ICRleGNlcHRpb247DQoNCiAgICAgICAgd2hpbGUgKCRwcmV2RXhjZXB0aW9uID0gJGxhc3QtPmdldFByZXZpb3VzKCkpIHsNCiAgICAgICAgICAgICRsYXN0ID0gJHByZXZFeGNlcHRpb247DQogICAgICAgICAgICA/Pg0KDQogICAgPHByZT4NCiAgICBDYXVzZWQgYnk6DQogICAgPD89IGVzYygkcHJldkV4Y2VwdGlvbjo6Y2xhc3MpLCBlc2MoJHByZXZFeGNlcHRpb24tPmdldENvZGUoKSA/ICcgIycgLiAkcHJldkV4Y2VwdGlvbi0+Z2V0Q29kZSgpIDogJycpID8+DQoNCiAgICA8Pz0gbmwyYnIoZXNjKCRwcmV2RXhjZXB0aW9uLT5nZXRNZXNzYWdlKCkpKSA/Pg0KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmR1Y2tkdWNrZ28uY29tLz9xPTw/PSB1cmxlbmNvZGUoJHByZXZFeGNlcHRpb246OmNsYXNzIC4gJyAnIC4gcHJlZ19yZXBsYWNlKCcjXCcuKlwnfCIuKiIjVXMnLCAnJywgJHByZXZFeGNlcHRpb24tPmdldE1lc3NhZ2UoKSkpID8+Ig0KICAgICAgIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPnNlYXJjaCAmcmFycjs8L2E+DQogICAgPD89IGVzYyhjbGVhbl9wYXRoKCRwcmV2RXhjZXB0aW9uLT5nZXRGaWxlKCkpIC4gJzonIC4gJHByZXZFeGNlcHRpb24tPmdldExpbmUoKSkgPz4NCiAgICA8L3ByZT4NCg0KICAgICAgICA8P3BocA0KICAgICAgICB9DQogICAgICAgID8+DQogICAgPC9kaXY+DQoNCiAgICA8P3BocCBpZiAoZGVmaW5lZCgnU0hPV19ERUJVR19CQUNLVFJBQ0UnKSAmJiBTSE9XX0RFQlVHX0JBQ0tUUkFDRSkgOiA/Pg0KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQoNCiAgICAgICAgPHVsIGNsYXNzPSJ0YWJzIiBpZD0idGFicyI+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2JhY2t0cmFjZSI+QmFja3RyYWNlPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3NlcnZlciI+U2VydmVyPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3JlcXVlc3QiPlJlcXVlc3Q8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSIjcmVzcG9uc2UiPlJlc3BvbnNlPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2ZpbGVzIj5GaWxlczwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNtZW1vcnkiPk1lbW9yeTwvYT48L2xpPg0KICAgICAgICA8L3VsPg0KDQogICAgICAgIDxkaXYgY2xhc3M9InRhYi1jb250ZW50Ij4NCg0KICAgICAgICAgICAgPCEtLSBCYWNrdHJhY2UgLS0+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiBpZD0iYmFja3RyYWNlIj4NCg0KICAgICAgICAgICAgICAgIDxvbCBjbGFzcz0idHJhY2UiPg0KICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCR0cmFjZSBhcyAkaW5kZXggPT4gJHJvdykgOiA/Pg0KDQogICAgICAgICAgICAgICAgICAgIDxsaT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVHJhY2UgaW5mbyAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNzZXQoJHJvd1snZmlsZSddKSAmJiBpc19maWxlKCRyb3dbJ2ZpbGUnXSkpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRyb3dbJ2Z1bmN0aW9uJ10pICYmIGluX2FycmF5KCRyb3dbJ2Z1bmN0aW9uJ10sIFsnaW5jbHVkZScsICdpbmNsdWRlX29uY2UnLCAncmVxdWlyZScsICdyZXF1aXJlX29uY2UnXSwgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gZXNjKCRyb3dbJ2Z1bmN0aW9uJ10gLiAnICcgLiBjbGVhbl9wYXRoKCRyb3dbJ2ZpbGUnXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBlc2MoY2xlYW5fcGF0aCgkcm93WydmaWxlJ10pIC4gJyA6ICcgLiAkcm93WydsaW5lJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZTogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1BIUCBpbnRlcm5hbCBjb2RlfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDbGFzcy9NZXRob2QgLS0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzc2V0KCRyb3dbJ2NsYXNzJ10pKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZtZGFzaDsmbmJzcDsmbmJzcDs8Pz0gZXNjKCRyb3dbJ2NsYXNzJ10gLiAkcm93Wyd0eXBlJ10gLiAkcm93WydmdW5jdGlvbiddKSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoISBlbXB0eSgkcm93WydhcmdzJ10pKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCAkYXJnc0lkID0gJGVycm9ySWQgLiAnYXJncycgLiAkaW5kZXggPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggPGEgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHRvZ2dsZSgnPD89IGVzYygkYXJnc0lkLCAnYXR0cicpID8+Jyk7Ij5hcmd1bWVudHM8L2E+ICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZ3MiIGlkPSI8Pz0gZXNjKCRhcmdzSWQsICdhdHRyJykgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCI+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXMgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZmxlY3Rpb24gYnkgbmFtZSBpcyBub3QgYXZhaWxhYmxlIGZvciBjbG9zdXJlIGZ1bmN0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgc3RyX2VuZHNfd2l0aCgkcm93WydmdW5jdGlvbiddLCAnfScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtaXJyb3IgPSBpc3NldCgkcm93WydjbGFzcyddKSA/IG5ldyBSZWZsZWN0aW9uTWV0aG9kKCRyb3dbJ2NsYXNzJ10sICRyb3dbJ2Z1bmN0aW9uJ10pIDogbmV3IFJlZmxlY3Rpb25GdW5jdGlvbigkcm93WydmdW5jdGlvbiddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtcyA9ICRtaXJyb3ItPmdldFBhcmFtZXRlcnMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcm93WydhcmdzJ10gYXMgJGtleSA9PiAkdmFsdWUpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxjb2RlPjw/PSBlc2MoaXNzZXQoJHBhcmFtc1ska2V5XSkgPyAnJCcgLiAkcGFyYW1zWyRrZXldLT5uYW1lIDogIiN7JGtleX0iKSA/PjwvY29kZT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwcmU+PD89IGVzYyhwcmludF9yKCR2YWx1ZSwgdHJ1ZSkpID8+PC9wcmU+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2UgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoISBpc3NldCgkcm93WydjbGFzcyddKSAmJiBpc3NldCgkcm93WydmdW5jdGlvbiddKSkgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbWRhc2g7Jm5ic3A7Jm5ic3A7ICAgIDw/PSBlc2MoJHJvd1snZnVuY3Rpb24nXSkgPz4oKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNvdXJjZT8gLS0+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNzZXQoJHJvd1snZmlsZSddKSAmJiBpc19maWxlKCRyb3dbJ2ZpbGUnXSkgJiYgaXNzZXQoJHJvd1snY2xhc3MnXSkpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzb3VyY2UiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pz0gc3RhdGljOjpoaWdobGlnaHRGaWxlKCRyb3dbJ2ZpbGUnXSwgJHJvd1snbGluZSddKSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgICAgIDwvbGk+DQoNCiAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/Pg0KICAgICAgICAgICAgICAgIDwvb2w+DQoNCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8IS0tIFNlcnZlciAtLT4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIGlkPSJzZXJ2ZXIiPg0KICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKFsnX1NFUlZFUicsICdfU0VTU0lPTiddIGFzICR2YXIpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRHTE9CQUxTWyR2YXJdKSB8fCAhIGlzX2FycmF5KCRHTE9CQUxTWyR2YXJdKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgIH0gPz4NCg0KICAgICAgICAgICAgICAgICAgICA8aDM+JDw/PSBlc2MoJHZhcikgPz48L2gzPg0KDQogICAgICAgICAgICAgICAgICAgIDx0YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5LZXk8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+VmFsdWU8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZm9yZWFjaCAoJEdMT0JBTFNbJHZhcl0gYXMgJGtleSA9PiAkdmFsdWUpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Pz0gZXNjKCRrZXkpID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IGVzYygkdmFsdWUpID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PD89IGVzYyhwcmludF9yKCR2YWx1ZSwgdHJ1ZSkpID8+PC9wcmU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQoNCiAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoID8+DQoNCiAgICAgICAgICAgICAgICA8IS0tIENvbnN0YW50cyAtLT4NCiAgICAgICAgICAgICAgICA8P3BocCAkY29uc3RhbnRzID0gZ2V0X2RlZmluZWRfY29uc3RhbnRzKHRydWUpOyA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwIGlmICghIGVtcHR5KCRjb25zdGFudHNbJ3VzZXInXSkpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgPGgzPkNvbnN0YW50czwvaDM+DQoNCiAgICAgICAgICAgICAgICAgICAgPHRhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPktleTwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkY29uc3RhbnRzWyd1c2VyJ10gYXMgJGtleSA9PiAkdmFsdWUpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Pz0gZXNjKCRrZXkpID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IGVzYygkdmFsdWUpID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PD89IGVzYyhwcmludF9yKCR2YWx1ZSwgdHJ1ZSkpID8+PC9wcmU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPCEtLSBSZXF1ZXN0IC0tPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgaWQ9InJlcXVlc3QiPg0KICAgICAgICAgICAgICAgIDw/cGhwICRyZXF1ZXN0ID0gc2VydmljZSgncmVxdWVzdCcpOyA/Pg0KDQogICAgICAgICAgICAgICAgPHRhYmxlPg0KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogMTBlbSI+UGF0aDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSBlc2MoJHJlcXVlc3QtPmdldFVyaSgpKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5IVFRQIE1ldGhvZDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSBlc2MoJHJlcXVlc3QtPmdldE1ldGhvZCgpKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5JUCBBZGRyZXNzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89IGVzYygkcmVxdWVzdC0+Z2V0SVBBZGRyZXNzKCkpID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogMTBlbSI+SXMgQUpBWCBSZXF1ZXN0PzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSAkcmVxdWVzdC0+aXNBSkFYKCkgPyAneWVzJyA6ICdubycgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+SXMgQ0xJIFJlcXVlc3Q/PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89ICRyZXF1ZXN0LT5pc0NMSSgpID8gJ3llcycgOiAnbm8nID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPklzIFNlY3VyZSBSZXF1ZXN0PzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSAkcmVxdWVzdC0+aXNTZWN1cmUoKSA/ICd5ZXMnIDogJ25vJyA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5Vc2VyIEFnZW50PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89IGVzYygkcmVxdWVzdC0+Z2V0VXNlckFnZW50KCktPmdldEFnZW50U3RyaW5nKCkpID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQoNCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICA8L3RhYmxlPg0KDQoNCiAgICAgICAgICAgICAgICA8P3BocCAkZW1wdHkgPSB0cnVlOyA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKFsnX0dFVCcsICdfUE9TVCcsICdfQ09PS0lFJ10gYXMgJHZhcikgOiA/Pg0KICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJEdMT0JBTFNbJHZhcl0pIHx8ICEgaXNfYXJyYXkoJEdMT0JBTFNbJHZhcl0pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgfSA/Pg0KDQogICAgICAgICAgICAgICAgICAgIDw/cGhwICRlbXB0eSA9IGZhbHNlOyA/Pg0KDQogICAgICAgICAgICAgICAgICAgIDxoMz4kPD89IGVzYygkdmFyKSA/PjwvaDM+DQoNCiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogMTAwJSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+S2V5PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRHTE9CQUxTWyR2YXJdIGFzICRrZXkgPT4gJHZhbHVlKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89IGVzYygka2V5KSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc19zdHJpbmcoJHZhbHVlKSkgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/PSBlc2MoJHZhbHVlKSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZTogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjw/PSBlc2MocHJpbnRfcigkdmFsdWUsIHRydWUpKSA/PjwvcHJlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KDQogICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaCA/Pg0KDQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCRlbXB0eSkgOiA/Pg0KDQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsZXJ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIE5vICRfR0VULCAkX1BPU1QsIG9yICRfQ09PS0lFIEluZm9ybWF0aW9uIHRvIHNob3cuDQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQoNCiAgICAgICAgICAgICAgICA8P3BocCAkaGVhZGVycyA9ICRyZXF1ZXN0LT5oZWFkZXJzKCk7ID8+DQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCEgZW1wdHkoJGhlYWRlcnMpKSA6ID8+DQoNCiAgICAgICAgICAgICAgICAgICAgPGgzPkhlYWRlcnM8L2gzPg0KDQogICAgICAgICAgICAgICAgICAgIDx0YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5IZWFkZXI8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+VmFsdWU8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89IGVzYygkbmFtZSwgJ2h0bWwnKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIEhlYWRlcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBlc2MoJHZhbHVlLT5nZXRWYWx1ZUxpbmUoKSwgJ2h0bWwnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkaSA9PiAkaGVhZGVyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnICgnLiAkaSsxIC4gJykgJyAuIGVzYygkaGVhZGVyLT5nZXRWYWx1ZUxpbmUoKSwgJ2h0bWwnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCg0KICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDwhLS0gUmVzcG9uc2UgLS0+DQogICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IHNlcnZpY2UoJ3Jlc3BvbnNlJyk7DQogICAgICAgICAgICAgICAgJHJlc3BvbnNlLT5zZXRTdGF0dXNDb2RlKGh0dHBfcmVzcG9uc2VfY29kZSgpKTsNCiAgICAgICAgICAgID8+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiBpZD0icmVzcG9uc2UiPg0KICAgICAgICAgICAgICAgIDx0YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogMTVlbSI+UmVzcG9uc2UgU3RhdHVzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Pz0gZXNjKCRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpIC4gJyAtICcgLiAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90YWJsZT4NCg0KICAgICAgICAgICAgICAgIDw/cGhwICRoZWFkZXJzID0gJHJlc3BvbnNlLT5oZWFkZXJzKCk7ID8+DQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCEgZW1wdHkoJGhlYWRlcnMpKSA6ID8+DQogICAgICAgICAgICAgICAgICAgIDxoMz5IZWFkZXJzPC9oMz4NCg0KICAgICAgICAgICAgICAgICAgICA8dGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+SGVhZGVyPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRuYW1lID0+ICR2YWx1ZSkgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSBlc2MoJG5hbWUsICdodG1sJykgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBIZWFkZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gZXNjKCRyZXNwb25zZS0+Z2V0SGVhZGVyTGluZSgkbmFtZSksICdodG1sJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJGkgPT4gJGhlYWRlcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyAoJy4gJGkrMSAuICcpICcgLiBlc2MoJGhlYWRlci0+Z2V0VmFsdWVMaW5lKCksICdodG1sJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQoNCiAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8IS0tIEZpbGVzIC0tPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgaWQ9ImZpbGVzIj4NCiAgICAgICAgICAgICAgICA8P3BocCAkZmlsZXMgPSBnZXRfaW5jbHVkZWRfZmlsZXMoKTsgPz4NCg0KICAgICAgICAgICAgICAgIDxvbD4NCiAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIDo/Pg0KICAgICAgICAgICAgICAgICAgICA8bGk+PD89IGVzYyhjbGVhbl9wYXRoKCRmaWxlKSkgPz48L2xpPg0KICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2ggPz4NCiAgICAgICAgICAgICAgICA8L29sPg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDwhLS0gTWVtb3J5IC0tPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgaWQ9Im1lbW9yeSI+DQoNCiAgICAgICAgICAgICAgICA8dGFibGU+DQogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+TWVtb3J5IFVzYWdlPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89IGVzYyhzdGF0aWM6OmRlc2NyaWJlTWVtb3J5KG1lbW9yeV9nZXRfdXNhZ2UodHJ1ZSkpKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDEyZW0iPlBlYWsgTWVtb3J5IFVzYWdlOjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSBlc2Moc3RhdGljOjpkZXNjcmliZU1lbW9yeShtZW1vcnlfZ2V0X3BlYWtfdXNhZ2UodHJ1ZSkpKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5NZW1vcnkgTGltaXQ6PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89IGVzYyhpbmlfZ2V0KCdtZW1vcnlfbGltaXQnKSkgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICA8L3RhYmxlPg0KDQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8L2Rpdj4gIDwhLS0gL3RhYi1jb250ZW50IC0tPg0KDQogICAgPC9kaXY+IDwhLS0gL2NvbnRhaW5lciAtLT4NCiAgICA8P3BocCBlbmRpZjsgPz4NCg0KPC9ib2R5Pg0KPC9odG1sPg0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtOO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";