{"ok":true,"data":null,"error":null,"modules":{"TAccountReturns":"PG1vZHVsZSBuYW1lPSJUQWNjb3VudFJldHVybnMiPg0KDQoNCg0KDQoNCjx0ZW1wbGF0ZSBuYW1lPSJUQWNjb3VudFJldHVybnMiICA+CjxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgo8c2VjdGlvbiBjbGFzcz0iZHYiIHBsYW50aWxsYT0iVEFjY291bnRSZXR1cm5zIj4KCiAgICA8ZGl2IGNsYXNzPSJkdi1yZWoiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJkdi1jdWVycG8iPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWMtY2FiIj48bmF2IGNsYXNzPSJhYy1taWdhcyIgYXJpYS1sYWJlbD0iRMOzbmRlIGVzdMOhcyI+PGEgaHJlZj0iL2FjY291bnQiPk1pIGN1ZW50YTwvYT48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpjaGV2cm9uLXJpZ2h0Ij48L2ljb25pZnktaWNvbj48c3BhbiBhcmlhLWN1cnJlbnQ9InBhZ2UiPkRldm9sdWNpb25lczwvc3Bhbj48L25hdj48ZGl2IGNsYXNzPSJhYy1jYWItZmlsYSI+PGRpdiBjbGFzcz0iYWMtY2FiLXR4dCI+PGgxPk1pcyBkZXZvbHVjaW9uZXM8L2gxPjxwPkNvbnN1bHRhIGVsIGVzdGFkbyBkZSB0dXMgc29saWNpdHVkZXMgZGUgZGV2b2x1Y2nDs24geSByZWVtYm9sc28uPC9wPjwvZGl2PjwvZGl2PjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1jaWZyYXMiPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWNpZnJhIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtY2lmcmEtaWNvbm8gZHYtdG9uby12ZXJkZSI+PGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6cGFja2FnZSI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1jaWZyYS10eHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz0iZHYtanMtdG90YWwiPuKAlDwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkRldm9sdWNpb25lcyB0b3RhbGVzPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LWpzLXRvdGFsLXBpZSI+RGVzZGUgdHUgcHJpbWVyYSBjb21wcmE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtY2lmcmEiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1jaWZyYS1pY29ubyBkdi10b25vLWFtYmFyIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpjbG9jayI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1jaWZyYS10eHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz0iZHYtanMtcmV2aXNpb24iPuKAlDwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkVuIHJldmlzacOzbjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBlbmRpZW50ZXMgZGUgcmVzb2x1Y2nDs248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtY2lmcmEiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1jaWZyYS1pY29ubyBkdi10b25vLXZlcmRlIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpjaXJjbGUtY2hlY2siPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtY2lmcmEtdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImR2LWpzLWFwcm9iYWRhcyI+4oCUPC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+QXByb2JhZGFzPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+RGV2b2x1Y2nDs24gYWNlcHRhZGE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtY2lmcmEiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1jaWZyYS1pY29ubyBkdi10b25vLXZlcmRlIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpjcmVkaXQtY2FyZCI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1jaWZyYS10eHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz0iZHYtanMtcmVlbWJvbHNhZGFzIj7igJQ8L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5SZWVtYm9sc2FkYXM8L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5JbXBvcnRlIGRldnVlbHRvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWZpbHRyb3MgYWMtZmlsdHJvcyI+CgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJhYy1idXNjYXIiPgogICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOnNlYXJjaCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InNlYXJjaCIgY2xhc3M9ImR2LWpzLWJ1c2NhciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkJ1c2NhciBkZXZvbHVjacOzbiwgcGVkaWRvIG8gcHJvZHVjdG/igKYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9IkJ1c2NhciBlbiB0dXMgZGV2b2x1Y2lvbmVzIj4KICAgICAgICAgICAgICAgIDwvbGFiZWw+CgogICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iYWMtc2VsZWN0IGR2LWpzLWYtZXN0YWRvIiBhcmlhLWxhYmVsPSJFc3RhZG8gZGUgbGEgZGV2b2x1Y2nDs24iPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+RXN0YWRvOiB0b2Rvczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InJldmlzaW9uIj5FbiByZXZpc2nDs248L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJhcHJvYmFkYSI+QWNlcHRhZGFzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZW52aW8iPkVzcGVyYW5kbyBwYXF1ZXRlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icmVjaWJpZGEiPlBhcXVldGUgcmVjaWJpZG88L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJmaW5hbGl6YWRhIj5GaW5hbGl6YWRhczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InJlY2hhemFkYSI+UmVjaGF6YWRhczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImNhbmNlbGFkYSI+Q2FuY2VsYWRhczwvb3B0aW9uPgogICAgICAgICAgICAgICAgPC9zZWxlY3Q+CgogICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iYWMtc2VsZWN0IGR2LWpzLWYtZmVjaGEiIGFyaWEtbGFiZWw9IkZlY2hhIGRlIHNvbGljaXR1ZCI+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5Ub2RhcyBsYXMgZmVjaGFzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMzBkIj7Dmmx0aW1vcyAzMCBkw61hczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjZtIj7Dmmx0aW1vcyA2IG1lc2VzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYW55byI+w5psdGltbyBhw7FvPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8L3NlbGVjdD4KCiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJhYy1zZWxlY3QgZHYtanMtZi12ZW5kZWRvciIgYXJpYS1sYWJlbD0iVmVuZGVkb3IiPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+VmVuZGVkb3I6IHRvZG9zPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8L3NlbGVjdD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJkdi1idG4gZHYtYnRuLXByaW1hcmlvIGR2LWpzLXNvbGljaXRhciI+CiAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6cGx1cyI+PC9pY29uaWZ5LWljb24+IFNvbGljaXRhciBkZXZvbHVjacOzbgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImR2LWxpc3RhLXpvbmEiPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWxpc3RhLWNhYiI+CiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJkdi10aXR1bG8iPkxpc3RhIGRlIGRldm9sdWNpb25lczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LWN1ZW50YSBkdi1qcy1jdWVudGEiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJhYy1zZWxlY3QgZHYtanMtZi1vcmRlbiIgYXJpYS1sYWJlbD0iT3JkZW5hciBwb3IiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPk3DoXMgcmVjaWVudGVzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImFudGlndW9zIj5Nw6FzIGFudGlndWFzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImltcG9ydGVfZGVzYyI+TWF5b3IgaW1wb3J0ZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJpbXBvcnRlX2FzYyI+TWVub3IgaW1wb3J0ZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtbGlzdGEgZHYtanMtbGlzdGEiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi12YWNpbyBkdi1qcy12YWNpbyIgaGlkZGVuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi12YWNpby1pY29ubyI+PGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6cGFja2FnZS1vcGVuIj48L2ljb25pZnktaWNvbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImR2LWpzLXZhY2lvLXRpdHVsbyI+PC9iPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkdi1qcy12YWNpby1waWUiPjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LXBpZSBkdi1qcy1waWUiIGhpZGRlbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtY3VlbnRhIGR2LWpzLWN1ZW50YS1waWUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJkdi1wYWdpbmFzIGR2LWpzLXBhZ2luYXMiIGFyaWEtbGFiZWw9IlDDoWdpbmFzIj48L25hdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxhc2lkZSBjbGFzcz0iZHYtbGFkbyI+CgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZHYtY2FyZCBkdi1zb3BvcnRlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LXNvcG9ydGUtY2FiIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtc29wb3J0ZS1pY29ubyI+PGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6aGVhZHBob25lcyI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiPsK/TmVjZXNpdGFzIGF5dWRhIGNvbiB1bmEgZGV2b2x1Y2nDs24/PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5OdWVzdHJvIGVxdWlwbyBlc3TDoSBhcXXDrSBwYXJhIGF5dWRhcnRlIGVuIHRvZG8gZWwgcHJvY2VzbyBkZSBkZXZvbHVjacOzbi48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZHYtYnRuIGR2LWJ0bi1wcmltYXJpbyBkdi1qcy1zb3BvcnRlIj4KICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpoZWFkcGhvbmVzIj48L2ljb25pZnktaWNvbj4gQ29udGFjdGFyIGNvbiBzb3BvcnRlCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImR2LWNhcmQiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJkdi1jYXJkLXRpdHVsbyI+SW5mb3JtYWNpw7NuIHNvYnJlIGRldm9sdWNpb25lczwvaDM+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtaW5mby1maWxhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LWluZm8taWNvbm8iPjxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmNhbGVuZGFyLWRheXMiPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LWluZm8tdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz0iZHYtanMtcGxhem8tdGl0dWxvIj5QbGF6byBwYXJhIGRldm9sdmVyPC9iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJkdi1qcy1wbGF6by1waWUiPlB1ZWRlcyBzb2xpY2l0YXIgdW5hIGRldm9sdWNpw7NuIGRlbnRybyBkZWwgcGxhem8gZGVzZGUgcXVlIHJlY2liZXMgdHUgcGVkaWRvLjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1pbmZvLWZpbGEiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtaW5mby1pY29ubyI+PGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6Ym94Ij48L2ljb25pZnktaWNvbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1pbmZvLXR4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5Qcm9kdWN0b3MgZW4gYnVlbiBlc3RhZG88L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+RWwgcHJvZHVjdG8gZGViZSBjb25zZXJ2YXIgc3UgZW1iYWxhamUgb3JpZ2luYWwgc2llbXByZSBxdWUgc2VhIHBvc2libGUuPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWluZm8tZmlsYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1pbmZvLWljb25vIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpjYW1lcmEiPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LWluZm8tdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkFkanVudGEgZXZpZGVuY2lhczwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5JbmNsdXllIGZvdG9zIGRlbCBwcm9kdWN0byB5IGRlbCBlbWJhbGFqZSBwYXJhIGFnaWxpemFyIGxhIGdlc3Rpw7NuLjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1pbmZvLWZpbGEiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtaW5mby1pY29ubyI+PGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6Y3JlZGl0LWNhcmQiPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LWluZm8tdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlJlZW1ib2xzbzwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5VbmEgdmV6IHJlY2liaWRhIHkgdmVyaWZpY2FkYSBsYSBkZXZvbHVjacOzbiwgZW1pdGltb3MgZWwgcmVlbWJvbHNvIHBvciBlbCBtZWRpbyBxdWUgZWxlZ2lzdGUuPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImR2LWVubGFjZSIgaHJlZj0iL3BvbGl0aWNhcy1lbnZpby1kZXZvbHVjaW9uIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+CiAgICAgICAgICAgICAgICAgICAgTGVlciBsYSBwb2zDrXRpY2EgY29tcGxldGEgZGUgZGV2b2x1Y2lvbmVzIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmFycm93LXJpZ2h0Ij48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImR2LWNhcmQgZHYtanMtZmFxLWNhcmQiIGhpZGRlbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWNhcmQtY2FiIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImR2LWNhcmQtdGl0dWxvIj5QcmVndW50YXMgZnJlY3VlbnRlczwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImR2LWVubGFjZSIgaHJlZj0iL2F5dWRhIj5WZXIgdG9kYXM8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWZhcSBkdi1qcy1mYXEiPjwvZGl2PgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgIAogICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iZHYtdHBsLWZpbGEiPgogICAgICAgIDxhcnRpY2xlIGNsYXNzPSJkdi1maWxhIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1mLWZvdG8iPgogICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6cGFja2FnZSI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJkdi1qcy1mb3RvIiBhbHQ9IiI+CiAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWYtaWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtZi1yZWYiPgogICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJkdi1qcy1jb2RlIj48L2I+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LXBpbGRvcmEgZHYtanMtcGlsZG9yYSI+PGljb25pZnktaWNvbj48L2ljb25pZnktaWNvbj48c3Bhbj48L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImR2LWYtcGVkaWRvIGR2LWpzLXBlZGlkby1jYWphIj4KICAgICAgICAgICAgICAgICAgICBQZWRpZG8gb3JpZ2luYWw6IDxhIGNsYXNzPSJkdi1qcy1wZWRpZG8iIGhyZWY9ImphdmFzY3JpcHQ6OyI+PC9hPgogICAgICAgICAgICAgICAgPC9zbWFsbD4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1mLXZlbmRlZG9yIGR2LWpzLXZlbmRlZG9yIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJkdi1mLXYtZm90byBkdi1qcy12LWZvdG8iIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtZi12LXZhcmlvcyBkdi1qcy12LXZhcmlvcyIgaGlkZGVuPjxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOnVzZXJzIj48L2ljb25pZnktaWNvbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LWYtdi10eHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz0iZHYtanMtdi1ub21icmUiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJkdi1qcy12LWx1Z2FyIj48L3NtYWxsPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWYtcHJvZHVjdG8iPgogICAgICAgICAgICAgICAgPGIgY2xhc3M9ImR2LWpzLXAtbm9tYnJlIj48L2I+CiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImR2LWpzLXAtY2FudGlkYWQiPjwvc21hbGw+CiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImR2LWYtbW90aXZvIGR2LWpzLXAtbW90aXZvLWNhamEiPk1vdGl2bzogPHNwYW4gY2xhc3M9ImR2LWpzLXAtbW90aXZvIj48L3NwYW4+PC9zbWFsbD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1mLWRhdG8gZHYtZi1mZWNoYSI+CiAgICAgICAgICAgICAgICA8c21hbGw+U29saWNpdGFkYTwvc21hbGw+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtanMtZmVjaGEiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0iZHYtanMtb3BlcmFjaW9uIj48L2VtPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWYtZGF0byBkdi1mLWVzdGFkbyI+CiAgICAgICAgICAgICAgICA8c21hbGw+RXN0YWRvIGRldm9sdWNpw7NuPC9zbWFsbD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1lc3RhZG8gZHYtanMtZXN0YWRvIj48aWNvbmlmeS1pY29uPjwvaWNvbmlmeS1pY29uPjxzcGFuPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtZi1kYXRvIGR2LWYtcmVlbWJvbHNvIj4KICAgICAgICAgICAgICAgIDxzbWFsbD5Fc3RhZG8gcmVlbWJvbHNvPC9zbWFsbD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1lc3RhZG8gZHYtanMtcmVlbWJvbHNvIj48aWNvbmlmeS1pY29uPjwvaWNvbmlmeS1pY29uPjxzcGFuPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtZi1pbXBvcnRlIj4KICAgICAgICAgICAgICAgIDxzbWFsbD5JbXBvcnRlPC9zbWFsbD4KICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJkdi1qcy1pbXBvcnRlIj48L2I+CiAgICAgICAgICAgICAgICA8c3Bhbj5JVkEgaW5jbHVpZG88L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtZi1hY2Npb25lcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1mLWJvdG9uZXMgZHYtanMtYm90b25lcyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1mLW1lbnUtY2FqYSI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJkdi1mLW1hcyBkdi1qcy1tYXMiIGFyaWEtbGFiZWw9Ik3DoXMgb3BjaW9uZXMiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTplbGxpcHNpcy12ZXJ0aWNhbCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9hcnRpY2xlPgogICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJkdi10cGwtc29saWNpdHVkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZHYtc29saWNpdHVkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHYtc29sLWNhYiI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtc29sLWljb25vIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpzcGxpdCI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImR2LXNvbC10eHQiPgogICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJkdi1qcy1zLXRpdHVsbyI+PC9iPgogICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iZHYtanMtcy1waWUiPjwvc21hbGw+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtc29sLWRhdG8iPgogICAgICAgICAgICAgICAgICAgIDxzbWFsbD5Fc3RhZG88L3NtYWxsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdi1waWxkb3JhIGR2LWpzLXMtZXN0YWRvIj48aWNvbmlmeS1pY29uPjwvaWNvbmlmeS1pY29uPjxzcGFuPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtc29sLWRhdG8gZHYtc29sLXRvdGFsIj4KICAgICAgICAgICAgICAgICAgICA8c21hbGw+VG90YWwgYSBkZXZvbHZlcjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImR2LWpzLXMtdG90YWwiPjwvYj4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LXNvbC1maWxhcyBkdi1qcy1zLWZpbGFzIj48L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImR2LXRwbC1ib3RvbiI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJkdi1idG4gZHYtYnRuLWxpbmVhIj4KICAgICAgICAgICAgPGljb25pZnktaWNvbj48L2ljb25pZnktaWNvbj48c3Bhbj48L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImR2LXRwbC1tZW51Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJkdi1tZW51IiByb2xlPSJtZW51Ij4KICAgICAgICAgICAgPGEgY2xhc3M9ImR2LW1lbnUtb3AiIHJvbGU9Im1lbnVpdGVtIiBocmVmPSJqYXZhc2NyaXB0OjsiIGRhdGEtb3A9InZlciI+CiAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpleWUiPjwvaWNvbmlmeS1pY29uPjxzcGFuPlZlciBkZXRhbGxlPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJkdi1tZW51LW9wIiByb2xlPSJtZW51aXRlbSIgaHJlZj0iamF2YXNjcmlwdDo7IiBkYXRhLW9wPSJwZWRpZG8iPgogICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6c2hvcHBpbmctYmFnIj48L2ljb25pZnktaWNvbj48c3Bhbj5WZXIgcGVkaWRvPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJkdi1tZW51LW9wIiByb2xlPSJtZW51aXRlbSIgaHJlZj0iamF2YXNjcmlwdDo7IiBkYXRhLW9wPSJzb3BvcnRlIj4KICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmhlYWRwaG9uZXMiPjwvaWNvbmlmeS1pY29uPjxzcGFuPkNvbnRhY3RhciBjb24gc29wb3J0ZTwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0iZHYtbWVudS1vcCIgcm9sZT0ibWVudWl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6OyIgZGF0YS1vcD0iY29waWFyIj4KICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmNvcHkiPjwvaWNvbmlmeS1pY29uPjxzcGFuPkNvcGlhciBjw7NkaWdvPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImR2LXRwbC1wYWdpbmEiPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZHYtcGFnaW5hIj48L2J1dHRvbj4KICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iZHYtdHBsLWZhcSI+CiAgICAgICAgPGEgY2xhc3M9ImR2LWZhcS1maWxhIiBocmVmPSJqYXZhc2NyaXB0OjsiPgogICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpmaWxlLXRleHQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDxpY29uaWZ5LWljb24gY2xhc3M9ImR2LWZhcS1tYXMiIGljb249Imx1Y2lkZTpjaGV2cm9uLXJpZ2h0Ij48L2ljb25pZnktaWNvbj4KICAgICAgICA8L2E+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImR2LXRwbC1lbGVnaXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImR2IGR2LWVsZWdpciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR2LWVsZWdpci1saXN0YSBkdi1qcy1lbGVnaXItbGlzdGEiPjwvZGl2PgogICAgICAgICAgICA8cCBjbGFzcz0iZHYtZWxlZ2lyLXZhY2lvIGR2LWpzLWVsZWdpci12YWNpbyIgaGlkZGVuPgogICAgICAgICAgICAgICAgQWhvcmEgbWlzbW8gbm8gdGllbmVzIHBlZGlkb3MgY29uIGFydMOtY3Vsb3MgcXVlIHNlIHB1ZWRhbiBkZXZvbHZlcjogbyB5YSBwYXPDsyBlbAogICAgICAgICAgICAgICAgcGxhem8sIG8gdGllbmVuIG90cmEgZGV2b2x1Y2nDs24gYWJpZXJ0YS4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8cCBjbGFzcz0iZHYtZWxlZ2lyLWNhcmdhbmRvIGR2LWpzLWVsZWdpci1jYXJnYW5kbyI+QnVzY2FuZG8gdHVzIHBlZGlkb3PigKY8L3A+CiAgICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDx0ZW1wbGF0ZSBjbGFzcz0iZHYtdHBsLWVsZWdpci1maWxhIj4KICAgICAgICA8YSBjbGFzcz0iZHYtZWxlZ2lyLWZpbGEiIGhyZWY9ImphdmFzY3JpcHQ6OyI+CiAgICAgICAgICAgIDxpbWcgY2xhc3M9ImR2LWpzLWUtZm90byIgYWx0PSIiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHYtZWxlZ2lyLXR4dCI+CiAgICAgICAgICAgICAgICA8YiBjbGFzcz0iZHYtanMtZS1yZWYiPjwvYj4KICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iZHYtanMtZS1waWUiPjwvc21hbGw+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPGIgY2xhc3M9ImR2LWVsZWdpci10b3RhbCBkdi1qcy1lLXRvdGFsIj48L2I+CiAgICAgICAgICAgIDxpY29uaWZ5LWljb24gY2xhc3M9ImR2LWZhcS1tYXMiIGljb249Imx1Y2lkZTpjaGV2cm9uLXJpZ2h0Ij48L2ljb25pZnktaWNvbj4KICAgICAgICA8L2E+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImR2LXRwbC1hZGp1bnRhciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZHYgZHYtYWRqdW50YXIiPgogICAgICAgICAgICA8cCBjbGFzcz0iZHYtYWRqdW50YXItdHh0Ij4KICAgICAgICAgICAgICAgIEZvdG9zIGRlbCBwcm9kdWN0byB5IGRlbCBlbWJhbGFqZSwgbyB1biBkb2N1bWVudG8uIENhZGEgYXJjaGl2byBzZSBhw7FhZGUgYSBsYQogICAgICAgICAgICAgICAgZGV2b2x1Y2nDs24gZW4gY3VhbnRvIHRlcm1pbmEgZGUgc3ViaXI6IGhhc3RhIDUsIGRlIDEyIE1CIGNvbW8gbcOheGltby4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdi1qcy1zdWJpZG9yIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+Cjwvc2VjdGlvbj4KDQoNCgo8L3RlbXBsYXRlPg0KDQo8c3R5bGUgbmFtZT0iVEFjY291bnRSZXR1cm5zIj4vKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgTUlTIERFVk9MVUNJT05FUyDigJQgZWwgbGlzdGFkbyBkZWwgw6FyZWEgZGUgY2xpZW50ZQogICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKCiAgIE1hcXVldGE6IGB0bXAtbWFxdWV0YXMvTWlzIERldm9sdWNpb25lcy9NaXMgRGV2b2x1Y2lvbmVzLnBuZ2AuCgogICBMT1MgVkFMT1JFUyBTT04gTE9TIERFIMKrTUlTIFBFRElET1PCuyAoYFRBY2NvdW50T3JkZXJzLmNzc2ApOiB0YXJqZXRhIGRlIDE0cHgKICAgZGUgcmFkaW8sIGJvcmRlIGAtLXNkLWJvcmRlYCwgcMOtbGRvcmEgZGUgMjJweCwgY2lmcmFzIGRlIDI0cHguIEVzIGxhIHBhbnRhbGxhCiAgIGhlcm1hbmEgeSBlbCBjbGllbnRlIHBhc2EgZGUgdW5hIGEgb3RyYTogZG9zIHJhZGlvcyBkaXN0aW50b3MgcGFyYSBsYSBtaXNtYQogICB0YXJqZXRhIGVzIGxvIHF1ZSBsdWVnbyBoYWNlIGltcG9zaWJsZSB1bmlmaWNhci4KCiAgIOKUgOKUgCBDQU5ESURBVE8gQSBMQSBIT0pBIENPTcOaTiBERUwgw4FSRUEgREUgQ0xJRU5URSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgYC5kdi1jYXJkYCwgYC5kdi1jaWZyYWAsIGAuZHYtcGlsZG9yYWAvYC5kdi1lc3RhZG9gLCBgLmR2LWJ0bmAgeSBsYSBjb2x1bW5hCiAgIGRlIGF5dWRhIHNvbiBsb3MgbWlzbW9zIGJsb3F1ZXMgcXVlIGAuYW8tKmAgY29uIG90cm8gcHJlZmlqby4gQ3VhbmRvIHNlCiAgIGV4dHJhaWdhIGxhIGhvamEgY29tw7puIC0tQ0xBVURFLm1kIGxhIGRlamEgcGFyYSBlbCBmaW5hbC0tIGVzdG9zIHNlIHZhbiBjb24KICAgbG9zIGRlIMKrTWlzIHBlZGlkb3PCuy4KCiAgIExhIGJhcnJhIGRlIGZpbHRyb3MgTk8gZXN0w6EgYXF1w606IGVzIGAuYWMtZmlsdHJvc2AgKFRBY2NvdW50VUkpLCBsYSBjb23Dum4gZGUKICAgdG9kb3MgbG9zIGxpc3RhZG9zLCBzdWVsdGEgeSBhIDMwcHguCiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKLmR2IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29sb3I6IHZhcigtLXNkLXRleHRvLCAjNDY1MTRhKTsKICAgIGZvbnQtc2l6ZTogMTRweDsKCiAgICAvKiBMb3MgY29ydGVzIG1pcmFuIGxhIGZpY2hhLCBubyBsYSB2ZW50YW5hOiB2aXZlIGRlbnRybyBkZWwgcGFuZWwuICovCiAgICBjb250YWluZXItdHlwZTogaW5saW5lLXNpemU7Cn0KLmR2LCAuZHYgW2NsYXNzXj0iZHYtIl0sIC5kdiBbY2xhc3MqPSIgZHYtIl0geyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9Ci5kdiBbaGlkZGVuXSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQoKLmR2IC5kdi1yZWogewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgMzAwcHg7CiAgICBnYXA6IDIwcHg7CiAgICBhbGlnbi1pdGVtczogc3RhcnQ7Cn0KLmR2IC5kdi1jdWVycG8geyBtaW4td2lkdGg6IDA7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMThweDsgfQouZHYgLmR2LWxhZG8gewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNnB4OwogICAgcG9zaXRpb246IHN0aWNreTsgdG9wOiBjYWxjKHZhcigtLXNpdGUtY2FiZWNlcmEsIDExOHB4KSArIDE0cHgpOwogICAgYWxpZ24tc2VsZjogc3RhcnQ7Cn0KCi5kdiAuZHYtY3VlcnBvID4gLmFjLWNhYiB7IG1hcmdpbi1ib3R0b206IDA7IH0KCkBjb250YWluZXIgKG1heC13aWR0aDogMTA4MHB4KSB7CiAgICAuZHYgLmR2LXJlaiB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7IH0KICAgIC5kdiAuZHYtbGFkbyB7IHBvc2l0aW9uOiBzdGF0aWM7IH0KfQoKLyog4pSA4pSAIExBUyBDVUFUUk8gQ0lGUkFTIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKLmR2IC5kdi1jaWZyYXMgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IGdhcDogMTRweDsgfQoKLmR2IC5kdi1jaWZyYSB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEycHg7CiAgICBwYWRkaW5nOiAxNnB4IDE4cHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOwogICAgYm9yZGVyLXJhZGl1czogMTRweDsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNkLXNvbWJyYSwgMCAycHggMTBweCByZ2JhKDIwLDQwLDI1LC4wNikpOwp9CgouZHYgLmR2LWNpZnJhLWljb25vIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgd2lkdGg6IDQ0cHg7IGhlaWdodDogNDRweDsgYm9yZGVyLXJhZGl1czogNTAlOwp9Ci8qIEVsIHRhbWHDsW8gc2UgZGVjbGFyYSBFTiBlbCBpY29ubzogYGljb25pZnktaWNvbmAgbm8gaGVyZWRhIGVsIGBmb250LXNpemVgLiAqLwouZHYgLmR2LWNpZnJhLWljb25vIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMjJweDsgfQoKLmR2IC5kdi1jaWZyYS10eHQgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IGRpc3BsYXk6IGJsb2NrOyB9Ci8qIENhZGEgbMOtbmVhIGNvbiBzdSB0YW1hw7FvIERFQ0xBUkFETzogbGEgaG9qYSBkZWwgc2l0aW8gZmlqYSBgZm9udDogMTJweGAgY29uCiAgIGxhIGZvcm1hIGNvcnRhIHkgYXJyYXNhIGVsIGhlcmVkYWRvIGRlIGN1YWxxdWllciBzcGFuLiAqLwouZHYgLmR2LWNpZnJhLXR4dCBiIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMjRweDsgZm9udC13ZWlnaHQ6IDgwMDsgbGluZS1oZWlnaHQ6IDE7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmR2IC5kdi1jaWZyYS10eHQgc21hbGwgeyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLXRvcDogNHB4OyBmb250LXNpemU6IDEyLjVweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsgfQouZHYgLmR2LWNpZnJhLXR4dCBzcGFuIHsgZGlzcGxheTogYmxvY2s7IG1hcmdpbi10b3A6IDFweDsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9CgpAY29udGFpbmVyIChtYXgtd2lkdGg6IDc2MHB4KSB7IC5kdiAuZHYtY2lmcmFzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOyB9IH0KQGNvbnRhaW5lciAobWF4LXdpZHRoOiA0MjBweCkgeyAuZHYgLmR2LWNpZnJhcyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7IH0gfQoKLyog4pSA4pSAIExPUyBUT05PUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgVW5vIHBvciBzaWduaWZpY2Fkbzogw6FtYmFyIMKrZXNwZXJhbmRvIGEgYWxndWllbsK7LCBhenVsIMKrZW4gbWFyY2hhwrssIHZlcmRlCiAgIMKraGVjaG/Cuywgcm9qbyDCq25vwrssIGdyaXMgwqt5YSBubyBhcGxpY2HCuy4gTG9zIHVzYW4gbGFzIGNpZnJhcyB5IGxhcyBww61sZG9yYXMuICovCgouZHYgLmR2LXRvbm8tdmVyZGUgeyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZS1vc2N1cm8sICMwMDVjMmQpOyB9Ci5kdiAuZHYtdG9uby1hbWJhciB7IGJhY2tncm91bmQ6ICNmZGYzZTI7IGNvbG9yOiAjYjU0NzA4OyB9Ci5kdiAuZHYtdG9uby1henVsICB7IGJhY2tncm91bmQ6ICNlYWYxZmQ7IGNvbG9yOiAjMTc1Y2QzOyB9Ci5kdiAuZHYtdG9uby1yb2pvICB7IGJhY2tncm91bmQ6ICNmZGVjZWM7IGNvbG9yOiAjYjQyMzE4OyB9Ci5kdiAuZHYtdG9uby1ncmlzICB7IGJhY2tncm91bmQ6ICNmMWYzZjI7IGNvbG9yOiAjNWI2NjYwOyB9CgovKiDilIDilIAgQk9UT05FUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgRWwgcHJpbmNpcGFsIHJlbGxlbm8geSBsb3MgZGUgbGEgZmlsYSBlbiBsw61uZWEgdmVyZGUsIGNvbW8gbGEgbWFxdWV0YS4gKi8KCi5kdiAuZHYtYnRuIHsKICAgIGhlaWdodDogMzZweDsgcGFkZGluZzogMCAxNHB4OwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBnYXA6IDdweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOwogICAgYm9yZGVyLXJhZGl1czogOXB4OwogICAgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNzAwOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjdXJzb3I6IHBvaW50ZXI7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQouZHYgLmR2LWJ0biBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDE2cHg7IH0KCi5kdiAuZHYtYnRuLXByaW1hcmlvIHsgYmFja2dyb3VuZDogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyBjb2xvcjogI2ZmZjsgfQouZHYgLmR2LWJ0bi1wcmltYXJpbzpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXNkLXZlcmRlLW9zY3VybywgIzAwNWMyZCk7IGNvbG9yOiAjZmZmOyB9CgouZHYgLmR2LWJ0bi1saW5lYSB7IGJvcmRlci1jb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyBjb2xvcjogdmFyKC0tc2QtdmVyZGUtb3NjdXJvLCAjMDA1YzJkKTsgfQouZHYgLmR2LWJ0bi1saW5lYTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXNkLXZlcmRlLWNsYXJvLCAjZWVmNmVlKTsgfQoKLyogRW4gbGEgYmFycmEgZGUgZmlsdHJvcywgY29uIGVsIGFsdG8gZGUgbGEgYmFycmEgY29tw7puLiAqLwouZHYgLmFjLWZpbHRyb3MgLmR2LWJ0biB7IGhlaWdodDogdmFyKC0tYWMtZmlsdHJvLWFsdG8sIDMwcHgpOyBib3JkZXItcmFkaXVzOiA4cHg7IH0KCi8qIOKUgOKUgCBMQSBMSVNUQSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCi5kdiAuZHYtbGlzdGEtem9uYSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTJweDsgfQoKLmR2IC5kdi1saXN0YS1jYWIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEycHg7IGZsZXgtd3JhcDogd3JhcDsgfQouZHYgLmR2LXRpdHVsbyB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAxN3B4OyBmb250LXdlaWdodDogODAwOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyB9Ci5kdiAuZHYtbGlzdGEtY2FiIC5kdi1jdWVudGEgeyBtYXJnaW4tbGVmdDogYXV0bzsgfQouZHYgLmR2LWN1ZW50YSB7IGZvbnQtc2l6ZTogMTIuNXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9CgouZHYgLmR2LWxpc3RhIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMHB4OyB9CgovKiDilIDilIAgVU5BIERFVk9MVUNJw5NOIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogICBMYXMgY29sdW1uYXMgZGUgbGEgbWFxdWV0YTogZm90byDCtyBjw7NkaWdvLCBwZWRpZG8geSB2ZW5kZWRvciDCtyBwcm9kdWN0byDCtwogICBzb2xpY2l0YWRhIMK3IGVzdGFkbyBkZSBsYSBkZXZvbHVjacOzbiDCtyBlc3RhZG8gZGVsIHJlZW1ib2xzbyDCtyBpbXBvcnRlIMK3CiAgIGFjY2lvbmVzLiBMb3MgdHJlcyBkYXRvcyBkZWwgY2VudHJvIHRpZW5lbiBhbmNobyBmaWpvIHBhcmEgcXVlIGxhcyBmaWxhcwogICBxdWVkZW4gZW4gY29sdW1uYSBkZSB1biB2aXN0YXpvLCBjb21vIHVuYSB0YWJsYS4gKi8KCi5kdiAuZHYtZmlsYSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBncmlkOwogICAgLyogTGFzIGFjY2lvbmVzIGNvbiBhbmNobyBGSUpPOiBjb24gYGF1dG9gLCB1bmEgZmlsYSBkZSB1biBib3TDs24geSBvdHJhIGRlCiAgICAgICBkb3MgcmVwYXJ0w61hbiBkaXN0aW50byBsYXMgY29sdW1uYXMgZGUgdGV4dG8geSBubyBxdWVkYWJhbiBlbiB2ZXJ0aWNhbC4gKi8KICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNjRweCBtaW5tYXgoMCwgMS4yNWZyKSBtaW5tYXgoMCwgMS4xNWZyKSA4OHB4IDExMnB4IDExMnB4IDkwcHggMTcwcHg7CiAgICBnYXA6IDEycHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFkZGluZzogMTJweCAxNHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zZC1zb21icmEsIDAgMnB4IDEwcHggcmdiYSgyMCw0MCwyNSwuMDYpKTsKfQouZHYgLmR2LWZpbGE6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXNkLXZlcmRlLWJvcmRlLCAjY2ZlM2QyKTsgfQovKiBDb24gZWwgbWVuw7ogYWJpZXJ0byBsYSBmaWxhIHZhIHBvciBlbmNpbWEgZGUgbGEgc2lndWllbnRlLiAqLwouZHYgLmR2LWZpbGEuY29uLW1lbnUgeyB6LWluZGV4OiA1OyB9CgouZHYgLmR2LWYtZm90byB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogNjRweDsgaGVpZ2h0OiA2NHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tc2QtY3JlbWEsICNmN2ZhZjYpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOwogICAgY29sb3I6IHZhcigtLXNkLXRlbnVlLCAjOTNhMzk5KTsKfQouZHYgLmR2LWYtZm90byBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDI0cHg7IH0KLyogTGEgZm90byB0YXBhIGVsIGljb25vIGRlIHJlc3BhbGRvOyBzaW4gZm90bywgc2UgdmUgZWwgcGFxdWV0ZS4gKi8KLmR2IC5kdi1mLWZvdG8gaW1nIHsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb2JqZWN0LWZpdDogY292ZXI7IH0KCi5kdiAuZHYtZi1pZCB7IG1pbi13aWR0aDogMDsgfQouZHYgLmR2LWYtcmVmIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IGZsZXgtd3JhcDogd3JhcDsgfQouZHYgLmR2LWYtcmVmIGIgeyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KCi5kdiAuZHYtZi1wZWRpZG8geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLXRvcDogM3B4OyBmb250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQouZHYgLmR2LWYtcGVkaWRvIGEgeyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlcjogMDsgfQouZHYgLmR2LWYtcGVkaWRvIGE6dmlzaXRlZCB7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7IH0KLmR2IC5kdi1mLXBlZGlkbyBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCi8qIFF1acOpbiB2ZW5kZTogbGEgZm90byBlbiBzdSBjb2x1bW5hIHkgdG9kbyBlbCB0ZXh0byBlbiBsYSBzZWd1bmRhLiAqLwouZHYgLmR2LWYtdmVuZGVkb3IgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgbWFyZ2luLXRvcDogN3B4OyBtaW4td2lkdGg6IDA7IH0KLmR2IC5kdi1mLXYtZm90bywKLmR2IC5kdi1mLXYtdmFyaW9zIHsKICAgIGZsZXg6IDAgMCBhdXRvOyB3aWR0aDogMjZweDsgaGVpZ2h0OiAyNnB4OyBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBvYmplY3QtZml0OiBjb3ZlcjsgYmFja2dyb3VuZDogdmFyKC0tc2QtdmVyZGUtY2xhcm8sICNlZWY2ZWUpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6IHZhcigtLXNkLXZlcmRlLCAjMDQ3MTNhKTsKfQouZHYgLmR2LWYtdi12YXJpb3MgaWNvbmlmeS1pY29uIHsgZm9udC1zaXplOiAxM3B4OyB9Ci5kdiAuZHYtZi12LXR4dCB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfQouZHYgLmR2LWYtdi10eHQgYiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmR2IC5kdi1mLXYtdHh0IHNtYWxsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IH0KCi5kdiAuZHYtZi1wcm9kdWN0byB7IG1pbi13aWR0aDogMDsgfQouZHYgLmR2LWYtcHJvZHVjdG8gYiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEyLjVweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsgfQouZHYgLmR2LWYtcHJvZHVjdG8gc21hbGwgeyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLXRvcDogMnB4OyBmb250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQouZHYgLmR2LWYtcHJvZHVjdG8gLmR2LWYtbW90aXZvIHsgbWFyZ2luLXRvcDogNXB4OyB9Ci5kdiAuZHYtZi1tb3Rpdm8gc3BhbiB7IGZvbnQtc2l6ZTogMTEuNXB4OyBjb2xvcjogdmFyKC0tc2QtdGV4dG8sICM0NjUxNGEpOyB9CgovKiBMb3MgdHJlcyBkYXRvcyBjb24gcsOzdHVsbyBlbmNpbWE6IMKrU29saWNpdGFkYcK7LCDCq0VzdGFkbyBkZXZvbHVjacOzbsK74oCmICovCi5kdiAuZHYtZi1kYXRvIHsgbWluLXdpZHRoOiAwOyB9Ci5kdiAuZHYtZi1kYXRvID4gc21hbGwgeyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLWJvdHRvbTogNHB4OyBmb250LXNpemU6IDEwLjVweDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQouZHYgLmR2LWYtZGF0byA+IHNwYW46bm90KC5kdi1lc3RhZG8pIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsgfQouZHYgLmR2LWYtZGF0byA+IGVtIHsgZGlzcGxheTogYmxvY2s7IG1hcmdpbi10b3A6IDJweDsgZm9udC1zaXplOiAxMC41cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQoKLyogTEEgUMONTERPUkEganVudG8gYWwgY8OzZGlnbywgeSBMQSBFVElRVUVUQSBkZSBlc3RhZG8gZGUgbGFzIGNvbHVtbmFzOiBsYQogICBtaXNtYSBwaWV6YSBlbiBkb3MgdGFtYcOxb3MuIExhIGRlIGNvbHVtbmEgcHVlZGUgcGFydGlyc2UgZW4gZG9zIGzDrW5lYXMKICAgLS3Cq1BlbmRpZW50ZSBkZSBhcHJvYmFjacOzbsK7IG5vIGNhYmUgZW4gMTEycHgtLTsgbGEgZGVsIGPDs2RpZ28sIG5vLiAqLwouZHYgLmR2LXBpbGRvcmEsCi5kdiAuZHYtZXN0YWRvIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDVweDsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKfQouZHYgLmR2LXBpbGRvcmEgeyBoZWlnaHQ6IDIycHg7IHBhZGRpbmc6IDAgOXB4OyBmb250LXNpemU6IDExcHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KLmR2IC5kdi1waWxkb3JhIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMTJweDsgfQouZHYgLmR2LXBpbGRvcmEgPiBzcGFuIHsgZm9udC1zaXplOiAxMXB4OyB9CgouZHYgLmR2LWVzdGFkbyB7IHBhZGRpbmc6IDVweCA5cHg7IGJvcmRlci1yYWRpdXM6IDhweDsgZm9udC1zaXplOiAxMXB4OyBsaW5lLWhlaWdodDogMS4yNTsgbWF4LXdpZHRoOiAxMDAlOyB9Ci5kdiAuZHYtZXN0YWRvIGljb25pZnktaWNvbiB7IGZsZXg6IDAgMCBhdXRvOyBmb250LXNpemU6IDEzcHg7IH0KLmR2IC5kdi1lc3RhZG8gPiBzcGFuIHsgZm9udC1zaXplOiAxMXB4OyB9CgouZHYgLmR2LWYtaW1wb3J0ZSB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KLmR2IC5kdi1mLWltcG9ydGUgc21hbGwgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMC41cHg7IGNvbG9yOiB2YXIoLS1zZC1zdWF2ZSwgIzZiN2E3MCk7IH0KLmR2IC5kdi1mLWltcG9ydGUgYiB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tdG9wOiAycHg7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDgwMDsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsgbGV0dGVyLXNwYWNpbmc6IC0uMnB4OyB9Ci5kdiAuZHYtZi1pbXBvcnRlIHNwYW4geyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMC41cHg7IGNvbG9yOiB2YXIoLS1zZC1zdWF2ZSwgIzZiN2E3MCk7IH0KCi5kdiAuZHYtZi1hY2Npb25lcyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IGdhcDogNHB4OyB9Ci5kdiAuZHYtZi1ib3RvbmVzIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA2cHg7IH0KLmR2IC5kdi1mLWJvdG9uZXMgLmR2LWJ0biB7IGhlaWdodDogMzJweDsgbWluLXdpZHRoOiAxMzJweDsgZm9udC1zaXplOiAxMi41cHg7IH0KCi8qIOKUgOKUgCBFTCBNRU7DmiBERUwgwqvii67CuyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCi5kdiAuZHYtZi1tZW51LWNhamEgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5kdiAuZHYtZi1tYXMgewogICAgd2lkdGg6IDMwcHg7IGhlaWdodDogMzBweDsgcGFkZGluZzogMDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogMDsgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHZhcigtLXNkLXRlbnVlLCAjOTNhMzk5KTsgY3Vyc29yOiBwb2ludGVyOyBib3gtc2hhZG93OiBub25lOwp9Ci5kdiAuZHYtZi1tYXM6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC1jcmVtYSwgI2Y3ZmFmNik7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmR2IC5kdi1mLW1hcyBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDE4cHg7IH0KCi5kdiAuZHYtbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogY2FsYygxMDAlICsgNHB4KTsgcmlnaHQ6IDA7IHotaW5kZXg6IDIwOwogICAgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNnB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsKICAgIGJvcmRlci1yYWRpdXM6IDExcHg7CiAgICBib3gtc2hhZG93OiAwIDEwcHggMjhweCByZ2JhKDIwLCA0MCwgMjUsIC4xNik7Cn0KLmR2IC5kdi1tZW51LW9wIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOXB4OwogICAgcGFkZGluZzogOHB4IDEwcHg7IGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyOiAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5kdiAuZHYtbWVudS1vcDp2aXNpdGVkIHsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsgfQouZHYgLmR2LW1lbnUtb3A6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZS1vc2N1cm8sICMwMDVjMmQpOyB9Ci5kdiAuZHYtbWVudS1vcCBpY29uaWZ5LWljb24geyBmbGV4OiAwIDAgYXV0bzsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyB9Ci8qIGBjb2xvcjogaW5oZXJpdGAgQSBMQSBGVUVSWkE6IGxhIGhvamEgZ2xvYmFsIHBpbnRhIGRlIG1vcmFkbyB0b2RvIGBzcGFuYAogICBkZW50cm8gZGUgdW4gZW5sYWNlLCB5IGVsIHLDs3R1bG8gc2Fsw61hIGRlIG90cm8gY29sb3IgcXVlIHN1IHByb3BpbyBlbmxhY2UuICovCi5kdiAuZHYtbWVudS1vcCBzcGFuLAouZHYgLmR2LWZhcS1maWxhID4gc3BhbiwKLmR2IC5kdi1lbGVnaXItZmlsYSBzcGFuIHsgY29sb3I6IGluaGVyaXQ7IH0KLmR2IC5kdi1tZW51LW9wIHNwYW4geyBmb250LXNpemU6IDEzcHg7IH0KCi8qIOKUgOKUgCBFU1RSRUNITyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgT2NobyBjb2x1bW5hcyBubyBjYWJlbiBlbiB1biBwYW5lbCBlc3RyZWNobzogbGEgZmlsYSBzZSBwYXJ0ZSBlbiBkb3MgcGxhbnRhcwogICAtLXF1acOpbiB5IHF1w6kgYXJyaWJhLCBsb3MgZGF0b3MgeSBsYXMgYWNjaW9uZXMgZGViYWpvLS0gYW50ZXMgcXVlIGNvbXByaW1pcgogICB0b2RvIGhhc3RhIHF1ZSBubyBzZSBsZWEgbmFkYS4gKi8KCkBjb250YWluZXIgKG1heC13aWR0aDogMTAwMHB4KSB7CiAgICAuZHYgLmR2LWZpbGEgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNjRweCByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpOwogICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6CiAgICAgICAgICAgICJmb3RvIGlkICAgICBpZCAgICAgcHJvZCAgIHByb2QiCiAgICAgICAgICAgICJmb3RvIGZlY2hhICBlc3RhZG8gcmVlbWIgIGltcG9ydGUiCiAgICAgICAgICAgICJhY2MgIGFjYyAgICBhY2MgICAgYWNjICAgIGFjYyI7CiAgICB9CiAgICAuZHYgLmR2LWYtZm90byAgICAgIHsgZ3JpZC1hcmVhOiBmb3RvOyBhbGlnbi1zZWxmOiBzdGFydDsgfQogICAgLmR2IC5kdi1mLWlkICAgICAgICB7IGdyaWQtYXJlYTogaWQ7IH0KICAgIC5kdiAuZHYtZi1wcm9kdWN0byAgeyBncmlkLWFyZWE6IHByb2Q7IH0KICAgIC5kdiAuZHYtZi1mZWNoYSAgICAgeyBncmlkLWFyZWE6IGZlY2hhOyB9CiAgICAuZHYgLmR2LWYtZXN0YWRvICAgIHsgZ3JpZC1hcmVhOiBlc3RhZG87IH0KICAgIC5kdiAuZHYtZi1yZWVtYm9sc28geyBncmlkLWFyZWE6IHJlZW1iOyB9CiAgICAuZHYgLmR2LWYtaW1wb3J0ZSAgIHsgZ3JpZC1hcmVhOiBpbXBvcnRlOyB9CiAgICAuZHYgLmR2LWYtYWNjaW9uZXMgIHsgZ3JpZC1hcmVhOiBhY2M7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH0KICAgIC5kdiAuZHYtZi1ib3RvbmVzICAgeyBmbGV4LWRpcmVjdGlvbjogcm93OyBmbGV4LXdyYXA6IHdyYXA7IH0KfQpAY29udGFpbmVyIChtYXgtd2lkdGg6IDYyMHB4KSB7CiAgICAuZHYgLmR2LWZpbGEgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTZweCByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOwogICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6CiAgICAgICAgICAgICJmb3RvICAgaWQgICAgIGlkICAgICBpZCIKICAgICAgICAgICAgInByb2QgICBwcm9kICAgcHJvZCAgIHByb2QiCiAgICAgICAgICAgICJmZWNoYSAgZmVjaGEgIGltcG9ydGUgaW1wb3J0ZSIKICAgICAgICAgICAgImVzdGFkbyBlc3RhZG8gcmVlbWIgIHJlZW1iIgogICAgICAgICAgICAiYWNjICAgIGFjYyAgICBhY2MgICAgYWNjIjsKICAgIH0KICAgIC5kdiAuZHYtZi1mb3RvIHsgd2lkdGg6IDU2cHg7IGhlaWdodDogNTZweDsgfQogICAgLmR2IC5kdi1mLWJvdG9uZXMgLmR2LWJ0biB7IG1pbi13aWR0aDogMDsgfQp9CgovKiDilIDilIAgU0lOIERFVk9MVUNJT05FUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCi5kdiAuZHYtdmFjaW8gewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7CiAgICBwYWRkaW5nOiA0MHB4IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOwogICAgYm9yZGVyLXJhZGl1czogMTRweDsKfQouZHYgLmR2LXZhY2lvLWljb25vIHsgZGlzcGxheTogZmxleDsgY29sb3I6IHZhcigtLXNkLXRlbnVlLCAjOTNhMzk5KTsgfQouZHYgLmR2LXZhY2lvLWljb25vIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMzRweDsgfQouZHYgLmR2LXZhY2lvIGIgeyBmb250LXNpemU6IDE1cHg7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmR2IC5kdi12YWNpbyBwIHsgbWFyZ2luOiAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1zZC1zdWF2ZSwgIzZiN2E3MCk7IG1heC13aWR0aDogNDZjaDsgfQoKLyog4pSA4pSAIEVMIFBJRTogUkVDVUVOVE8gWSBQw4FHSU5BUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCi5kdiAuZHYtcGllIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBnYXA6IDEycHg7IGZsZXgtd3JhcDogd3JhcDsgbWFyZ2luLXRvcDogNHB4OyB9Ci5kdiAuZHYtcGFnaW5hcyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyB9CgouZHYgLmR2LXBhZ2luYSB7CiAgICBtaW4td2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgcGFkZGluZzogMCA4cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOwogICAgY3Vyc29yOiBwb2ludGVyOyBib3gtc2hhZG93OiBub25lOwp9Ci5kdiAuZHYtcGFnaW5hOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7IGJvcmRlci1jb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyB9Ci5kdiAuZHYtcGFnaW5hW2Rpc2FibGVkXSB7IGN1cnNvcjogZGVmYXVsdDsgY29sb3I6IHZhcigtLXNkLXRlbnVlLCAjOTNhMzk5KTsgfQouZHYgLmR2LXBhZ2luYS5lcy1hY3R1YWwgeyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7IGJvcmRlci1jb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyBjb2xvcjogI2ZmZjsgfQouZHYgLmR2LXBhZ2luYS5kdi1wYWdpbmEtaHVlY28geyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyBiYWNrZ3JvdW5kOiBub25lOyB9Ci5kdiAuZHYtcGFnaW5hIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMTZweDsgfQoKLyog4pSA4pSAIExBIENPTFVNTkEgREUgQVlVREEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgouZHYgLmR2LWNhcmQgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zZC1zb21icmEsIDAgMnB4IDEwcHggcmdiYSgyMCw0MCwyNSwuMDYpKTsKICAgIHBhZGRpbmc6IDE2cHggMThweCAxOHB4Owp9Ci5kdiAuZHYtY2FyZC1jYWIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogYmFzZWxpbmU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZ2FwOiAxMHB4OyB9Ci5kdiAuZHYtY2FyZC10aXR1bG8geyBtYXJnaW46IDAgMCAxMnB4OyBmb250LXNpemU6IDE1cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KCi5kdiAuZHYtZW5sYWNlIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRweDsKICAgIGZvbnQtc2l6ZTogMTIuNXB4OyBmb250LXdlaWdodDogNzAwOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlcjogMDsKICAgIGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7Cn0KLmR2IC5kdi1lbmxhY2U6dmlzaXRlZCB7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7IH0KLmR2IC5kdi1lbmxhY2U6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQouZHYgLmR2LWVubGFjZSBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDE0cHg7IH0KCi8qIFNvcG9ydGU6IGljb25vIGEgbGEgaXpxdWllcmRhIHkgZWwgdGV4dG8gZW4gc3UgY29sdW1uYTsgZWwgYm90w7NuIGRlYmFqby4gKi8KLmR2IC5kdi1zb3BvcnRlIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7IGJvcmRlci1jb2xvcjogdmFyKC0tc2QtdmVyZGUtYm9yZGUsICNjZmUzZDIpOyB9Ci5kdiAuZHYtc29wb3J0ZS1jYWIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxMnB4OyB9Ci5kdiAuZHYtc29wb3J0ZS1pY29ubyB7CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiA0NnB4OyBoZWlnaHQ6IDQ2cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6ICNmZmY7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7Cn0KLmR2IC5kdi1zb3BvcnRlLWljb25vIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMjRweDsgfQouZHYgLmR2LXNvcG9ydGUgYiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDE1cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyB9Ci5kdiAuZHYtc29wb3J0ZSBwIHsgbWFyZ2luOiA1cHggMCAwOyBmb250LXNpemU6IDEyLjVweDsgbGluZS1oZWlnaHQ6IDEuNTsgY29sb3I6IHZhcigtLXNkLXRleHRvLCAjNDY1MTRhKTsgfQouZHYgLmR2LXNvcG9ydGUgLmR2LWJ0biB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDQwcHg7IH0KCi5kdiAuZHYtaW5mbyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KLmR2IC5kdi1pbmZvLWZpbGEgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxMnB4OyBwYWRkaW5nOiAxMHB4IDA7IH0KLmR2IC5kdi1pbmZvLWZpbGEgKyAuZHYtaW5mby1maWxhIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsgfQouZHYgLmR2LWluZm8taWNvbm8gewogICAgZmxleDogMCAwIGF1dG87CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogMzhweDsgaGVpZ2h0OiAzOHB4OyBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7Cn0KLmR2IC5kdi1pbmZvLWljb25vIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMThweDsgfQouZHYgLmR2LWluZm8tdHh0IHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyB9Ci5kdiAuZHYtaW5mby10eHQgYiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmR2IC5kdi1pbmZvLXR4dCBzbWFsbCB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tdG9wOiAycHg7IGZvbnQtc2l6ZTogMTEuNXB4OyBsaW5lLWhlaWdodDogMS40NTsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQoKLmR2IC5kdi1mYXEgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9Ci5kdiAuZHYtZmFxLWZpbGEgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA5cHg7CiAgICBwYWRkaW5nOiA5cHggMDsKICAgIGZvbnQtc2l6ZTogMTIuNXB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlcjogMDsKICAgIGNvbG9yOiB2YXIoLS1zZC10ZXh0bywgIzQ2NTE0YSk7Cn0KLmR2IC5kdi1mYXEtZmlsYSArIC5kdi1mYXEtZmlsYSB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zZC1ib3JkZSwgI2U0ZWFlNCk7IH0KLyogTGEgcmVnbGEgZ2xvYmFsIGRlIGBhOnZpc2l0ZWRgIHBpbnRhIGRlIG5lZ3JvIGVsIGJvcmRlIGRlIHVuIGVubGFjZSB5YQogICB2aXNpdGFkbywgeSBlc3RvcyBsbGV2YW4gcmF5YSBkZSBzZXBhcmFjacOzbi4gKi8KLmR2IC5kdi1mYXEtZmlsYTp2aXNpdGVkIHsgY29sb3I6IHZhcigtLXNkLXRleHRvLCAjNDY1MTRhKTsgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOyB9Ci5kdiAuZHYtZmFxLWZpbGE6aG92ZXIgeyBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyB9Ci5kdiAuZHYtZmFxLWZpbGEgPiBpY29uaWZ5LWljb246Zmlyc3QtY2hpbGQgeyBmbGV4OiAwIDAgYXV0bzsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyB9Ci5kdiAuZHYtZmFxLWZpbGEgPiBzcGFuIHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyBmb250LXNpemU6IDEyLjVweDsgfQouZHYgLmR2LWZhcS1tYXMgeyBmbGV4OiAwIDAgYXV0bzsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogdmFyKC0tc2QtdGVudWUsICM5M2EzOTkpOyB9CgovKiDilIDilIAgTE9TIE9WRVJMQVlTOiBFTEVHSVIgUEVESURPIFkgQURKVU5UQVIgRk9UT1Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIFNhbGVuIGEgYDxib2R5PmAsIGZ1ZXJhIGRlIGxhIGZpY2hhOiBwb3IgZXNvIHN1IGNhamEgbGxldmEgdGFtYmnDqW4gYC5kdmAsCiAgIHBhcmEgcXVlIGVzdGFzIHJlZ2xhcyBsb3MgYWxjYW5jZW4uICovCgouZHYuZHYtZWxlZ2lyLCAuZHYuZHYtYWRqdW50YXIgeyB3aWR0aDogbWluKDU2MHB4LCA4NnZ3KTsgY29udGFpbmVyLXR5cGU6IG5vcm1hbDsgfQoKLyogU2luIHRvcGUgbmkgYmFycmEgcHJvcGlhOiBsYSBkZWwgY3VlcnBvIGRlbCBvdmVybGF5IGJhc3RhLCB5IGRvcyBiYXJyYXMKICAgYW5pZGFkYXMgbm8gc2Ugc2FiZW4gbW92ZXIuICovCi5kdiAuZHYtZWxlZ2lyLWxpc3RhIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA4cHg7IH0KLmR2IC5kdi1lbGVnaXItZmlsYSB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEycHg7CiAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zZC1ib3JkZSwgI2U0ZWFlNCk7CiAgICBib3JkZXItcmFkaXVzOiAxMXB4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogdmFyKC0tc2QtdGV4dG8sICM0NjUxNGEpOwp9Ci5kdiAuZHYtZWxlZ2lyLWZpbGE6dmlzaXRlZCB7IGNvbG9yOiB2YXIoLS1zZC10ZXh0bywgIzQ2NTE0YSk7IGJvcmRlci1jb2xvcjogdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOyB9Ci5kdiAuZHYtZWxlZ2lyLWZpbGE6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXNkLXZlcmRlLCAjMDQ3MTNhKTsgYmFja2dyb3VuZDogdmFyKC0tc2QtdmVyZGUtY2xhcm8sICNlZWY2ZWUpOyB9Ci5kdiAuZHYtZWxlZ2lyLWZpbGEgaW1nIHsgZmxleDogMCAwIGF1dG87IHdpZHRoOiA0NHB4OyBoZWlnaHQ6IDQ0cHg7IGJvcmRlci1yYWRpdXM6IDhweDsgb2JqZWN0LWZpdDogY292ZXI7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsgfQouZHYgLmR2LWVsZWdpci10eHQgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IH0KLmR2IC5kdi1lbGVnaXItdHh0IGIgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMy41cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmR2IC5kdi1lbGVnaXItdHh0IHNtYWxsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTEuNXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9Ci5kdiAuZHYtZWxlZ2lyLXRvdGFsIHsgZmxleDogMCAwIGF1dG87IGZvbnQtc2l6ZTogMTMuNXB4OyBmb250LXdlaWdodDogODAwOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyB9Ci5kdiAuZHYtZWxlZ2lyLXZhY2lvLCAuZHYgLmR2LWVsZWdpci1jYXJnYW5kbywgLmR2IC5kdi1hZGp1bnRhci10eHQgeyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTNweDsgbGluZS1oZWlnaHQ6IDEuNTU7IGNvbG9yOiB2YXIoLS1zZC10ZXh0bywgIzQ2NTE0YSk7IH0KLmR2IC5kdi1hZGp1bnRhci10eHQgeyBtYXJnaW4tYm90dG9tOiAxMnB4OyB9CgovKiDilIDilIAgTEEgU09MSUNJVFVEIFBBUlRJREEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIE1vcmFkbywgY29tbyBlbiBsYSBmaWNoYTogZXMgZGUgcXXDqSB2YSwgbm8gcG9yIGTDs25kZSB2YS4gTGFzIGZpbGFzIGRlIGRlbnRybwogICBzb24gbGFzIGRlIHNpZW1wcmUsIHNpbiBzdSBwcm9waWEgdGFyamV0YTogbGEgdGFyamV0YSBlcyBsYSBzb2xpY2l0dWQuICovCi5kdiAuZHYtc29saWNpdHVkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkOWQyZjU7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgYmFja2dyb3VuZDogI2ZhZjhmZjsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KLmR2IC5kdi1zb2wtY2FiIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMnB4OyBmbGV4LXdyYXA6IHdyYXA7IHBhZGRpbmc6IDEycHggMTZweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlN2UxZmE7IH0KLmR2IC5kdi1zb2wtaWNvbm8gewogICAgZmxleDogMCAwIGF1dG87IHdpZHRoOiAzNnB4OyBoZWlnaHQ6IDM2cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYmFja2dyb3VuZDogIzViMjFiNjsgY29sb3I6ICNmZmY7Cn0KLmR2IC5kdi1zb2wtaWNvbm8gaWNvbmlmeS1pY29uIHsgZm9udC1zaXplOiAxN3B4OyB9Ci5kdiAuZHYtc29sLXR4dCB7IGZsZXg6IDE7IG1pbi13aWR0aDogMjAwcHg7IH0KLmR2IC5kdi1zb2wtdHh0IGIgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogODAwOyBjb2xvcjogIzJlMTA2NTsgfQouZHYgLmR2LXNvbC10eHQgc21hbGwgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzViNTY3MDsgfQouZHYgLmR2LXNvbC1kYXRvIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyBnYXA6IDJweDsgfQouZHYgLmR2LXNvbC1kYXRvIHNtYWxsIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9Ci5kdiAuZHYtc29sLXRvdGFsIGIgeyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IH0KLmR2IC5kdi10b25vLW1vcmFkbyB7IGJhY2tncm91bmQ6ICNmMWVkZmQ7IGNvbG9yOiAjNWIyMWI2OyB9Ci5kdiAuZHYtc29sLWZpbGFzIC5kdi1maWxhIHsgYm9yZGVyOiAwOyBib3JkZXItcmFkaXVzOiAwOyBib3gtc2hhZG93OiBub25lOyB9Ci5kdiAuZHYtc29sLWZpbGFzIC5kdi1maWxhICsgLmR2LWZpbGEgeyBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZjBlZjsgfQoNCg0KPC9zdHlsZT4NCg0KPHNjcmlwdCBuYW1lPSJUQWNjb3VudFJldHVybnMiID4vKioKICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAqICBNSVMgREVWT0xVQ0lPTkVTIOKAlCBlbCBjb21wb3J0YW1pZW50bwogKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICoKICogRWwgbWFyY2FkbyB2aXZlIGVuIGBUQWNjb3VudFJldHVybnMucGhwYDsgYXF1w60gc29sbyBzZSBjbG9uYSB5IHNlIHJlbGxlbmEuIE5pIHVuYQogKiBjYWRlbmEgZGUgcGxhbnRpbGxhIGNvbiBIVE1MIGRlbnRyby4KICoKICogVG9kbyBhY290YWRvIGEgYHRoaXMuaHRtbGA6IGxhIHBhbnRhbGxhIGNvbnZpdmUgY29uIG90cmFzIGVuIGVsIHBhbmVsIGRlIGxhCiAqIGN1ZW50YSB5IHVuIGAkKCcjbG9RdWVTZWEnKWAgZ2xvYmFsIGNvZ2Vyw61hIGxvIGRlIGxhIHZlY2luYS4KICovCmNsYXNzIFRBY2NvdW50UmV0dXJucyBleHRlbmRzIFRDb21wb25lbnRFUzYgewoKICAgIGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7CgogICAgICAgIHN1cGVyKHsgdGl0bGU6ICdNaXMgZGV2b2x1Y2lvbmVzJywgLi4ucGFyYW1zIH0pOwoKICAgICAgICB0aGlzLl90cGwgPSB7fTsKCiAgICAgICAgWydmaWxhJywgJ2JvdG9uJywgJ21lbnUnLCAncGFnaW5hJywgJ2ZhcScsICdlbGVnaXInLCAnZWxlZ2lyLWZpbGEnLCAnYWRqdW50YXInLCAnc29saWNpdHVkJ10uZm9yRWFjaChuID0+IHsKICAgICAgICAgICAgdGhpcy5fdHBsW25dID0gdGhpcy5odG1sLmZpbmQoJy5kdi10cGwtJyArIG4pWzBdOwogICAgICAgIH0pOwoKICAgICAgICAvKiBMbyBxdWUgaGF5IHBlZGlkbyBhaG9yYSBtaXNtby4gYHBhZ2luYWAgbG8gbXVldmUgbGEgcGFnaW5hY2nDs24uICovCiAgICAgICAgdGhpcy5fZmlsdHJvID0geyBidXNjYXI6ICcnLCBlc3RhZG86ICcnLCBmZWNoYTogJycsIHZlbmRlZG9yOiAnJywgb3JkZW46ICcnLCBwYWdpbmE6IDEgfTsKCiAgICAgICAgdGhpcy5fZW5jaHVmYXIoKTsKICAgICAgICB0aGlzLl9jYXJnYXIoKTsKICAgIH0KCiAgICAvKiogQ2xvbmEgdW4gYDx0ZW1wbGF0ZT5gIGRlbCBtYXJjYWRvIHkgZGV2dWVsdmUgc3Ugbm9kbyBlbiBqUXVlcnkuICovCiAgICBfY2xvbihjdWFsKSB7CgogICAgICAgIGNvbnN0IHQgPSB0aGlzLl90cGxbY3VhbF07CgogICAgICAgIHJldHVybiB0ID8gJCh0LmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpLmZpcnN0RWxlbWVudENoaWxkKSA6ICQoKTsKICAgIH0KCiAgICAvKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgICAqICBMT1MgQ09OVFJPTEVTCiAgICAgKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KCiAgICBfZW5jaHVmYXIoKSB7CgogICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzOwoKICAgICAgICBbJ2VzdGFkbycsICdmZWNoYScsICd2ZW5kZWRvcicsICdvcmRlbiddLmZvckVhY2goY2FtcG8gPT4gewogICAgICAgICAgICBzZWxmLmh0bWwuZmluZCgnLmR2LWpzLWYtJyArIGNhbXBvKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgc2VsZi5fZmlsdHJvW2NhbXBvXSA9ICQodGhpcykudmFsKCkgfHwgJyc7CiAgICAgICAgICAgICAgICBzZWxmLl9kZXNkZUNlcm8oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8qIEVMIEJVU0NBRE9SIEVTUEVSQSBBIFFVRSBTRSBERUpFIERFIEVTQ1JJQklSOiB1bmEgY29uc3VsdGEgcG9yIHRlY2xhCiAgICAgICAgICAgc29uIGRpZXogcGV0aWNpb25lcywgeSBwdWVkZW4gdm9sdmVyIGRlc29yZGVuYWRhcy4gKi8KICAgICAgICBsZXQgcmVsb2ogPSBudWxsOwoKICAgICAgICB0aGlzLmh0bWwub24oJ2tleXVwJywgJy5kdi1qcy1idXNjYXInLCBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICBjb25zdCB2ID0gJCh0aGlzKS52YWwoKSB8fCAnJzsKCiAgICAgICAgICAgIGlmIChyZWxvaikgY2xlYXJUaW1lb3V0KHJlbG9qKTsKCiAgICAgICAgICAgIHJlbG9qID0gc2V0VGltZW91dCgoKSA9PiB7IHNlbGYuX2ZpbHRyby5idXNjYXIgPSB2OyBzZWxmLl9kZXNkZUNlcm8oKTsgfSwgMzUwKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhpcy5odG1sLm9uKCdjbGljaycsICcuZHYtanMtc29saWNpdGFyJywgKCkgPT4gdGhpcy5fZWxlZ2lyUGVkaWRvKCkpOwogICAgICAgIHRoaXMuaHRtbC5vbignY2xpY2snLCAnLmR2LWpzLXNvcG9ydGUnLCAoKSA9PiB0aGlzLl9zb3BvcnRlKG51bGwpKTsKCiAgICAgICAgLyogRWwgbWVuw7ogZGVsIMKr4ouuwrsgc2UgY2llcnJhIGFsIHB1bHNhciBmdWVyYS4gVW4gc29sbyBlc2N1Y2hhZG9yIHBhcmEKICAgICAgICAgICB0b2RhIGxhIHBhbnRhbGxhLCBubyB1bm8gcG9yIGZpbGEuICovCiAgICAgICAgJChkb2N1bWVudCkuYmluZCgnY2xpY2suVEFjY291bnRSZXR1cm5zJywgZXYgPT4gewogICAgICAgICAgICBpZiAoISQoZXYudGFyZ2V0KS5jbG9zZXN0KCcuZHYtZi1tZW51LWNhamEnKS5sZW5ndGgpIHRoaXMuX2NlcnJhck1lbnUoKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKiogVW4gZmlsdHJvIG51ZXZvIGVtcGllemEgcG9yIGxhIHByaW1lcmEgcMOhZ2luYS4gKi8KICAgIF9kZXNkZUNlcm8oKSB7CiAgICAgICAgdGhpcy5fZmlsdHJvLnBhZ2luYSA9IDE7CiAgICAgICAgdGhpcy5fY2FyZ2FyKCk7CiAgICB9CgogICAgZGVzdHJveSgpIHsKICAgICAgICAkKGRvY3VtZW50KS51bmJpbmQoJ2NsaWNrLlRBY2NvdW50UmV0dXJucycpOwogICAgICAgIGlmIChzdXBlci5kZXN0cm95KSBzdXBlci5kZXN0cm95KCk7CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgKiAgTE9TIERBVE9TCiAgICAgKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KCiAgICBfY2FyZ2FyKCkgewoKICAgICAgICAvKiBTb2xvIGN1ZW50YSBsYSDDmkxUSU1BIHBldGljacOzbjogc2kgZWwgY2xpZW50ZSBjYW1iaWEgZGUgZmlsdHJvCiAgICAgICAgICAgbWllbnRyYXMgbGxlZ2EgbGEgYW50ZXJpb3IsIGVzYSByZXNwdWVzdGEgeWEgbm8gZXMgbG8gcXVlIHBpZGnDsy4gKi8KICAgICAgICBjb25zdCB0dXJubyA9IHRoaXMuX3R1cm5vID0gKHRoaXMuX3R1cm5vIHx8IDApICsgMTsKCiAgICAgICAgVE5ldENvbS5HRVQoJy9hY2NvdW50L3JldHVybnMvZGF0YScsIHRoaXMuX2ZpbHRybywgcmVzcCA9PiB7CgogICAgICAgICAgICBpZiAodHVybm8gIT09IHRoaXMuX3R1cm5vKSByZXR1cm47CiAgICAgICAgICAgIGlmICghcmVzcCB8fCAhcmVzcC5vaykgcmV0dXJuOyAgIC8vIGVsIGF2aXNvIGxvIHNhY2EgVE5ldENvbQoKICAgICAgICAgICAgdGhpcy5fcGludGFyKHJlc3AuZGF0YSB8fCB7fSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgX3BpbnRhcihkKSB7CgogICAgICAgIGNvbnN0IHMgPSBkLnN0YXRzIHx8IHt9OwoKICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmR2LWpzLXRvdGFsJykudGV4dChzLnRvdGFsICE9IG51bGwgPyBzLnRvdGFsIDogJ+KAlCcpOwogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuZHYtanMtcmV2aXNpb24nKS50ZXh0KHMucmV2aXNpb24gIT0gbnVsbCA/IHMucmV2aXNpb24gOiAn4oCUJyk7CiAgICAgICAgdGhpcy5odG1sLmZpbmQoJy5kdi1qcy1hcHJvYmFkYXMnKS50ZXh0KHMuYXByb2JhZGFzICE9IG51bGwgPyBzLmFwcm9iYWRhcyA6ICfigJQnKTsKICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmR2LWpzLXJlZW1ib2xzYWRhcycpLnRleHQocy5yZWVtYm9sc2FkYXMgIT0gbnVsbCA/IHMucmVlbWJvbHNhZGFzIDogJ+KAlCcpOwoKICAgICAgICAvKiBMQVMgQ0lGUkFTIENVRU5UQU4gREVWT0xVQ0lPTkVTLCBwb3JxdWUgbG9zIGVzdGFkb3Mgc29uIGRlIGNhZGEgdW5hOwogICAgICAgICAgIHNpIGFsZ3VuYXMgc29uIHBhcnRlcyBkZSBsYSBtaXNtYSBzb2xpY2l0dWQsIHNlIGRpY2UgY3XDoW50YXMKICAgICAgICAgICBzb2xpY2l0dWRlcyBzb24gcGFyYSBxdWUgZWwgbsO6bWVybyBubyBjb25mdW5kYS4gKi8KICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmR2LWpzLXRvdGFsLXBpZScpLnRleHQocy5zb2xpY2l0dWRlcyAhPSBudWxsICYmIHMuc29saWNpdHVkZXMgPCBzLnRvdGFsCiAgICAgICAgICAgID8gJ0VuICcgKyBzLnNvbGljaXR1ZGVzICsgKHMuc29saWNpdHVkZXMgPT09IDEgPyAnIHNvbGljaXR1ZCcgOiAnIHNvbGljaXR1ZGVzJykKICAgICAgICAgICAgOiAnRGVzZGUgdHUgcHJpbWVyYSBjb21wcmEnKTsKCiAgICAgICAgdGhpcy5fdmVuZGVkb3JlcyhkLnNlbGxlcnMgfHwgW10pOwogICAgICAgIHRoaXMuX3BsYXpvKGQucGxhem8pOwogICAgICAgIHRoaXMuX3ByZWd1bnRhcyhkLmZhcSB8fCBbXSk7CgogICAgICAgIGNvbnN0IGxpc3RhID0gdGhpcy5odG1sLmZpbmQoJy5kdi1qcy1saXN0YScpLmVtcHR5KCk7CgogICAgICAgIChkLnJldHVybnMgfHwgW10pLmZvckVhY2gociA9PiBsaXN0YS5hcHBlbmQoci50aXBvID09PSAnc29saWNpdHVkJyA/IHRoaXMuX3NvbGljaXR1ZChyKSA6IHRoaXMuX2ZpbGEocikpKTsKCiAgICAgICAgdGhpcy5fcGllKGQpOwogICAgfQoKICAgIC8qKiBFbCByZWN1ZW50bywgbGEgcGFnaW5hY2nDs24geSBlbCBodWVjbyB2YWPDrW8uICovCiAgICBfcGllKGQpIHsKCiAgICAgICAgY29uc3QgdG90YWwgPSBkLnRvdGFsIHx8IDA7CgogICAgICAgIC8qIEN1ZW50YSBERVZPTFVDSU9ORVMgYXVucXVlIGxhIHDDoWdpbmEgdmF5YSBwb3Igc29saWNpdHVkZXM6IHVuYQogICAgICAgICAgIHNvbGljaXR1ZCBkZSBkb3MgdmVuZGVkb3JlcyBzb24gZG9zIGRldm9sdWNpb25lcyBlbnNlw7FhZGFzLiAqLwogICAgICAgIGNvbnN0IGRldnMgPSBkLmRldm9sdWNpb25lcyAhPSBudWxsID8gZC5kZXZvbHVjaW9uZXMgOiB0b3RhbDsKICAgICAgICBjb25zdCB0ZXh0byA9IHRvdGFsCiAgICAgICAgICAgID8gJ01vc3RyYW5kbyAnICsgKGQubW9zdHJhZGFzICE9IG51bGwgPyBkLm1vc3RyYWRhcyA6ICgoZC5oYXN0YSB8fCAwKSAtIChkLmRlc2RlIHx8IDApICsgMSkpICsgJyBkZSAnICsgZGV2cyArIChkZXZzID09PSAxID8gJyBkZXZvbHVjacOzbicgOiAnIGRldm9sdWNpb25lcycpCiAgICAgICAgICAgIDogJyc7CgogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuZHYtanMtY3VlbnRhLCAuZHYtanMtY3VlbnRhLXBpZScpLnRleHQodGV4dG8pOwoKICAgICAgICBjb25zdCBwaWUgPSB0aGlzLmh0bWwuZmluZCgnLmR2LWpzLXBpZScpOwoKICAgICAgICBpZiAodG90YWwpIHBpZS5yZW1vdmVBdHRyKCdoaWRkZW4nKTsKICAgICAgICBlbHNlIHBpZS5hdHRyKCdoaWRkZW4nLCAnaGlkZGVuJyk7CgogICAgICAgIHRoaXMuX3BhZ2luYXMoZC5wYWdlIHx8IDEsIGQucGFnZXMgfHwgMSk7CgogICAgICAgIGNvbnN0IHZhY2lvID0gdGhpcy5odG1sLmZpbmQoJy5kdi1qcy12YWNpbycpOwoKICAgICAgICBpZiAodG90YWwpIHsgdmFjaW8uYXR0cignaGlkZGVuJywgJ2hpZGRlbicpOyByZXR1cm47IH0KCiAgICAgICAgLyogRE9TIFZBQ8ONT1MgRElTVElOVE9TOiBhIHF1aWVuIG51bmNhIGRldm9sdmnDsyBuYWRhIHNlIGxlIGRpY2UgY8OzbW8gc2UKICAgICAgICAgICBoYWNlLCB5IGEgcXVpZW4gaGEgZmlsdHJhZG8sIHF1ZSBhZmxvamUgZWwgZmlsdHJvLiAqLwogICAgICAgIGNvbnN0IGYgPSB0aGlzLl9maWx0cm87CiAgICAgICAgY29uc3QgZmlsdHJhbmRvID0gISEoZi5idXNjYXIgfHwgZi5lc3RhZG8gfHwgZi5mZWNoYSB8fCBmLnZlbmRlZG9yKTsKCiAgICAgICAgdGhpcy5odG1sLmZpbmQoJy5kdi1qcy12YWNpby10aXR1bG8nKS50ZXh0KAogICAgICAgICAgICBmaWx0cmFuZG8gPyAnTmluZ3VuYSBkZXZvbHVjacOzbiBjb24gZXNvcyBmaWx0cm9zJyA6ICdObyBoYXMgc29saWNpdGFkbyBuaW5ndW5hIGRldm9sdWNpw7NuJyk7CgogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuZHYtanMtdmFjaW8tcGllJykudGV4dCgKICAgICAgICAgICAgZmlsdHJhbmRvID8gJ1BydWViYSBhIHF1aXRhciBhbGd1bm8gcGFyYSB2ZXIgbcOhcyByZXN1bHRhZG9zLicKICAgICAgICAgICAgICAgICAgICAgIDogJ1NpIGFsZ28gZGUgdW4gcGVkaWRvIG5vIGxsZWfDsyBjb21vIGVzcGVyYWJhcywgcHVsc2EgwqtTb2xpY2l0YXIgZGV2b2x1Y2nDs27CuyB5IGVsaWdlIGVsIHBlZGlkby4nKTsKCiAgICAgICAgdmFjaW8ucmVtb3ZlQXR0cignaGlkZGVuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMQSBQQUdJTkFDScOTTjogZmxlY2hhLCBuw7ptZXJvcyB5IGZsZWNoYS4KICAgICAqCiAgICAgKiBDb24gbXVjaGFzIHDDoWdpbmFzIHNlIGVuc2XDsWFuIGxhIHByaW1lcmEsIGxhIMO6bHRpbWEgeSBsYXMgZG9zIHZlY2luYXMgZGUKICAgICAqIGxhIGFjdHVhbCwgY29uIMKr4oCmwrsgZW4gbG9zIHNhbHRvczogZGlleiBib3RvbmVzIHNlZ3VpZG9zIG5vIGNhYmVuIGVuIGxhCiAgICAgKiBmaWxhIHkgbm8gYXl1ZGFuIGEgbmFkaWUgYSBlbmNvbnRyYXIgbmFkYS4KICAgICAqLwogICAgX3BhZ2luYXMoYWN0dWFsLCB0b3RhbCkgewoKICAgICAgICBjb25zdCBuYXYgPSB0aGlzLmh0bWwuZmluZCgnLmR2LWpzLXBhZ2luYXMnKS5lbXB0eSgpOwoKICAgICAgICBpZiAodG90YWwgPD0gMSkgcmV0dXJuOwoKICAgICAgICBjb25zdCBib3RvbiA9ICh0ZXh0bywgcGFnaW5hLCBleHRyYSkgPT4gewoKICAgICAgICAgICAgY29uc3QgYiA9IHRoaXMuX2Nsb24oJ3BhZ2luYScpOwoKICAgICAgICAgICAgaWYgKCFiLmxlbmd0aCkgcmV0dXJuOwoKICAgICAgICAgICAgYi50ZXh0KHRleHRvKTsKCiAgICAgICAgICAgIGlmIChleHRyYSkgYi5hZGRDbGFzcyhleHRyYSk7CgogICAgICAgICAgICBpZiAocGFnaW5hID09PSBudWxsKSBiLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7CiAgICAgICAgICAgIGVsc2UgYi5vbignY2xpY2snLCAoKSA9PiB7IHRoaXMuX2ZpbHRyby5wYWdpbmEgPSBwYWdpbmE7IHRoaXMuX2NhcmdhcigpOyB9KTsKCiAgICAgICAgICAgIG5hdi5hcHBlbmQoYik7CiAgICAgICAgfTsKCiAgICAgICAgY29uc3QgZmxlY2hhID0gKGljb25vLCBwYWdpbmEsIHJvdHVsbykgPT4gewoKICAgICAgICAgICAgYm90b24oJycsIHBhZ2luYSwgJ2R2LXBhZ2luYS1mbGVjaGEnKTsKCiAgICAgICAgICAgIGNvbnN0IGIgPSBuYXYuY2hpbGRyZW4oKS5sYXN0KCk7CiAgICAgICAgICAgIGNvbnN0IGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpY29uaWZ5LWljb24nKTsKCiAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlKCdpY29uJywgaWNvbm8pOwogICAgICAgICAgICBiLmF0dHIoJ2FyaWEtbGFiZWwnLCByb3R1bG8pLmFwcGVuZChpKTsKICAgICAgICB9OwoKICAgICAgICBmbGVjaGEoJ2x1Y2lkZTpjaGV2cm9uLWxlZnQnLCBhY3R1YWwgPiAxID8gYWN0dWFsIC0gMSA6IG51bGwsICdQw6FnaW5hIGFudGVyaW9yJyk7CgogICAgICAgIGxldCBodWVjbyA9IGZhbHNlOwoKICAgICAgICBmb3IgKGxldCBwID0gMTsgcCA8PSB0b3RhbDsgcCsrKSB7CgogICAgICAgICAgICBjb25zdCBjZXJjYSA9IHAgPT09IDEgfHwgcCA9PT0gdG90YWwgfHwgTWF0aC5hYnMocCAtIGFjdHVhbCkgPD0gMTsKCiAgICAgICAgICAgIGlmICghY2VyY2EpIHsKICAgICAgICAgICAgICAgIGlmICghaHVlY28pIHsgYm90b24oJ+KApicsIG51bGwsICdkdi1wYWdpbmEtaHVlY28nKTsgaHVlY28gPSB0cnVlOyB9CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHVlY28gPSBmYWxzZTsKICAgICAgICAgICAgYm90b24oU3RyaW5nKHApLCBwID09PSBhY3R1YWwgPyBudWxsIDogcCwgcCA9PT0gYWN0dWFsID8gJ2VzLWFjdHVhbCcgOiAnJyk7CiAgICAgICAgfQoKICAgICAgICBmbGVjaGEoJ2x1Y2lkZTpjaGV2cm9uLXJpZ2h0JywgYWN0dWFsIDwgdG90YWwgPyBhY3R1YWwgKyAxIDogbnVsbCwgJ1DDoWdpbmEgc2lndWllbnRlJyk7CiAgICB9CgogICAgLyoqIExhcyBvcGNpb25lcyBkZWwgc2VsZWN0b3IgZGUgdmVuZGVkb3JlcywgZGUgc3VzIGRldm9sdWNpb25lcy4gKi8KICAgIF92ZW5kZWRvcmVzKGxpc3RhKSB7CgogICAgICAgIGNvbnN0IHNlbCA9IHRoaXMuaHRtbC5maW5kKCcuZHYtanMtZi12ZW5kZWRvcicpOwoKICAgICAgICBzZWwuZmluZCgnb3B0aW9uOmd0KDApJykucmVtb3ZlKCk7CgogICAgICAgIGxpc3RhLmZvckVhY2gobm9tYnJlID0+IHNlbC5hcHBlbmQoJCgnPG9wdGlvbj48L29wdGlvbj4nKS5hdHRyKCd2YWx1ZScsIG5vbWJyZSkudGV4dChub21icmUpKSk7CgogICAgICAgIHNlbC52YWwodGhpcy5fZmlsdHJvLnZlbmRlZG9yIHx8ICcnKTsKICAgIH0KCiAgICAvKiogwqsxNSBkw61hcyBwYXJhIGRldm9sdmVywrssIGNvbiBsb3MgZMOtYXMgZGUgbG9zIGFqdXN0ZXMuICovCiAgICBfcGxhem8oZGlhcykgewoKICAgICAgICBpZiAoIWRpYXMpIHJldHVybjsKCiAgICAgICAgdGhpcy5odG1sLmZpbmQoJy5kdi1qcy1wbGF6by10aXR1bG8nKS50ZXh0KGRpYXMgKyAoZGlhcyA9PT0gMSA/ICcgZMOtYScgOiAnIGTDrWFzJykgKyAnIHBhcmEgZGV2b2x2ZXInKTsKICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmR2LWpzLXBsYXpvLXBpZScpLnRleHQoCiAgICAgICAgICAgICdQdWVkZXMgc29saWNpdGFyIHVuYSBkZXZvbHVjacOzbiBoYXN0YSAnICsgZGlhcyArIChkaWFzID09PSAxID8gJyBkw61hJyA6ICcgZMOtYXMnKSArICcgZGVzcHXDqXMgZGUgcmVjaWJpciB0dSBwZWRpZG8uJyk7CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgKiAgVU5BIEZJTEEKICAgICAqIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqLwoKICAgIF9maWxhKHIpIHsKCiAgICAgICAgY29uc3QgbiA9IHRoaXMuX2Nsb24oJ2ZpbGEnKTsKCiAgICAgICAgaWYgKCFuLmxlbmd0aCkgcmV0dXJuICQoKTsKCiAgICAgICAgdGhpcy5fZm90byhuLmZpbmQoJy5kdi1qcy1mb3RvJyksIHIuZm90byk7CgogICAgICAgIG4uZmluZCgnLmR2LWpzLWNvZGUnKS50ZXh0KHIuY29kZSB8fCAnJyk7CiAgICAgICAgdGhpcy5fcGlsZG9yYShuLmZpbmQoJy5kdi1qcy1waWxkb3JhJyksIHIuZXN0YWRvKTsKCiAgICAgICAgaWYgKHIucGVkaWRvKSB7CiAgICAgICAgICAgIG4uZmluZCgnLmR2LWpzLXBlZGlkbycpCiAgICAgICAgICAgICAgICAudGV4dChyLnBlZGlkby5yZWYgfHwgJycpCiAgICAgICAgICAgICAgICAuYXR0cignaHJlZicsICcvYWNjb3VudC9vcmRlcnMvJyArIHIucGVkaWRvLmlkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuLmZpbmQoJy5kdi1qcy1wZWRpZG8tY2FqYScpLnJlbW92ZSgpOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5fdmVuZGVkb3Iobiwgci52ZW5kZWRvciB8fCB7fSk7CgogICAgICAgIGNvbnN0IHAgPSByLnByb2R1Y3RvIHx8IHt9OwoKICAgICAgICBuLmZpbmQoJy5kdi1qcy1wLW5vbWJyZScpLnRleHQoKHAubm9tYnJlIHx8ICcnKSArIChwLm1hcyA/ICcgeSAnICsgcC5tYXMgKyAocC5tYXMgPT09IDEgPyAnIHByb2R1Y3RvIG3DoXMnIDogJyBwcm9kdWN0b3MgbcOhcycpIDogJycpKTsKICAgICAgICBuLmZpbmQoJy5kdi1qcy1wLWNhbnRpZGFkJykudGV4dChwLmNhbnRpZGFkIHx8ICcnKTsKCiAgICAgICAgaWYgKHAubW90aXZvKSBuLmZpbmQoJy5kdi1qcy1wLW1vdGl2bycpLnRleHQocC5tb3Rpdm8pOwogICAgICAgIGVsc2Ugbi5maW5kKCcuZHYtanMtcC1tb3Rpdm8tY2FqYScpLnJlbW92ZSgpOwoKICAgICAgICBuLmZpbmQoJy5kdi1qcy1mZWNoYScpLnRleHQoci5mZWNoYSB8fCAnJyk7CiAgICAgICAgbi5maW5kKCcuZHYtanMtb3BlcmFjaW9uJykudGV4dChyLm9wZXJhY2lvbiB8fCAnJyk7CgogICAgICAgIHRoaXMuX3BpbGRvcmEobi5maW5kKCcuZHYtanMtZXN0YWRvJyksIHIuZXN0YWRvKTsKICAgICAgICB0aGlzLl9waWxkb3JhKG4uZmluZCgnLmR2LWpzLXJlZW1ib2xzbycpLCByLnJlZW1ib2xzbyk7CgogICAgICAgIG4uZmluZCgnLmR2LWpzLWltcG9ydGUnKS50ZXh0KHIudG90YWwgfHwgJycpOwoKICAgICAgICB0aGlzLl9ib3RvbmVzKG4uZmluZCgnLmR2LWpzLWJvdG9uZXMnKSwgci5hY2Npb25lcyB8fCBbXSwgcik7CgogICAgICAgIG4uZmluZCgnLmR2LWpzLW1hcycpLm9uKCdjbGljaycsIGV2ID0+IHRoaXMuX2FicmlyTWVudShldiwgbiwgcikpOwoKICAgICAgICByZXR1cm4gbjsKICAgIH0KCiAgICAvKioKICAgICAqIFVOQSBTT0xJQ0lUVUQgUEFSVElEQTogc3UgY2FiZWNlcmEgeSB1bmEgZmlsYSBwb3IgcGFydGUuIEVuIGxhcyBmaWxhcyBlbAogICAgICogcGVkaWRvIHNvYnJhIC0teWEgZXN0w6EgZW4gbGEgY2FiZWNlcmEtLSB5IGxvIHF1ZSBkaXN0aW5ndWUgYSBjYWRhIHVuYSBlcwogICAgICogc3UgdmVuZGVkb3IuCiAgICAgKi8KICAgIF9zb2xpY2l0dWQocikgewoKICAgICAgICBjb25zdCBuID0gdGhpcy5fY2xvbignc29saWNpdHVkJyk7CgogICAgICAgIGlmICghbi5sZW5ndGgpIHJldHVybiAkKCk7CgogICAgICAgIG4uZmluZCgnLmR2LWpzLXMtdGl0dWxvJykudGV4dCgnU29saWNpdHVkICcgKyByLmNvZGlnbyArICcgwrcgJyArIHIubiArICcgZGV2b2x1Y2lvbmVzJyk7CiAgICAgICAgbi5maW5kKCcuZHYtanMtcy1waWUnKS50ZXh0KFsKICAgICAgICAgICAgci5wZWRpZG8gPyAnUGVkaWRvICcgKyByLnBlZGlkby5yZWYgOiAnJywKICAgICAgICAgICAgci5mZWNoYSB8fCAnJywKICAgICAgICAgICAgJ0NhZGEgdmVuZGVkb3IgdHJhbWl0YSBsYSBzdXlhLCBjYWRhIHVuYSBjb24gc3UgY8OzZGlnby4nLAogICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyDCtyAnKSk7CgogICAgICAgIGNvbnN0IHJlc3VlbHRhcyA9IE51bWJlcihyLnJlc3VlbHRhcyB8fCAwKTsKICAgICAgICB0aGlzLl9waWxkb3JhKG4uZmluZCgnLmR2LWpzLXMtZXN0YWRvJyksIHJlc3VlbHRhcyA+PSByLm4KICAgICAgICAgICAgPyB7IGxhYmVsOiAnUmVzdWVsdGEnLCB0b25vOiAndmVyZGUnLCBpY29ubzogJ2x1Y2lkZTpjaXJjbGUtY2hlY2snIH0KICAgICAgICAgICAgOiB7IGxhYmVsOiByZXN1ZWx0YXMgKyAnIGRlICcgKyByLm4gKyAnIHJlc3VlbHRhcycsIHRvbm86ICdhbWJhcicsIGljb25vOiAnbHVjaWRlOmNsb2NrJyB9KTsKCiAgICAgICAgbi5maW5kKCcuZHYtanMtcy10b3RhbCcpLnRleHQoci50b3RhbCB8fCAnJyk7CgogICAgICAgIGNvbnN0IGZpbGFzID0gbi5maW5kKCcuZHYtanMtcy1maWxhcycpOwogICAgICAgIChyLmZpbGFzIHx8IFtdKS5mb3JFYWNoKGYgPT4gewogICAgICAgICAgICBjb25zdCBmaWxhID0gdGhpcy5fZmlsYShmKTsKICAgICAgICAgICAgZmlsYS5maW5kKCcuZHYtanMtcGVkaWRvLWNhamEnKS5yZW1vdmUoKTsKICAgICAgICAgICAgZmlsYXMuYXBwZW5kKGZpbGEpOwogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gbjsKICAgIH0KCiAgICAvKiogVW5hIGZvdG8sIG8gZnVlcmE6IHVuIHJlY3VhZHJvIHJvdG8gZXMgcGVvciBxdWUgdW4gaHVlY28uICovCiAgICBfZm90byhpbWcsIHVybCkgewoKICAgICAgICBpZiAodXJsKSBpbWcuYXR0cignc3JjJywgdXJsKTsKICAgICAgICBlbHNlIGltZy5yZW1vdmUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFVuYSBww61sZG9yYTogcsOzdHVsbywgaWNvbm8geSB0b25vLgogICAgICoKICAgICAqIEVsIFRPTk8gZXMgdW5hIGNsYXNlIHkgbm8gdW4gY29sb3IgZW4gbMOtbmVhOiBsb3MgdG9ub3Mgc29uIGxvcyBkZSBsYQogICAgICogcGFsZXRhIGRlbCDDoXJlYSBkZSBjbGllbnRlLCB5IGVsIHLDs3R1bG8gZXMgZWwgZGVsIGNhdMOhbG9nby4KICAgICAqLwogICAgX3BpbGRvcmEoZWwsIGUpIHsKCiAgICAgICAgaWYgKCFlIHx8ICFlLmxhYmVsKSB7IGVsLnJlbW92ZSgpOyByZXR1cm47IH0KCiAgICAgICAgZWwuYWRkQ2xhc3MoJ2R2LXRvbm8tJyArIChlLnRvbm8gfHwgJ2dyaXMnKSk7CiAgICAgICAgZWwuZmluZCgnaWNvbmlmeS1pY29uJykuYXR0cignaWNvbicsIGUuaWNvbm8gfHwgJ2x1Y2lkZTpjbG9jaycpOwogICAgICAgIGVsLmNoaWxkcmVuKCdzcGFuJykudGV4dChlLmxhYmVsKTsKICAgIH0KCiAgICAvKiogUXVpw6luIHZlbmRlOiB1bm8gY29uIHN1IGZvdG8geSBzdSBzaXRpbywgbyDCq1ZhcmlvcyB2ZW5kZWRvcmVzwrsuICovCiAgICBfdmVuZGVkb3IobiwgdikgewoKICAgICAgICBpZiAoIXYubm9tYnJlKSB7IG4uZmluZCgnLmR2LWpzLXZlbmRlZG9yJykucmVtb3ZlKCk7IHJldHVybjsgfQoKICAgICAgICBuLmZpbmQoJy5kdi1qcy12LW5vbWJyZScpLnRleHQodi5ub21icmUpOwogICAgICAgIG4uZmluZCgnLmR2LWpzLXYtbHVnYXInKS50ZXh0KHYubHVnYXIgfHwgJycpOwoKICAgICAgICBpZiAodi52YXJpb3MpIHsKICAgICAgICAgICAgbi5maW5kKCcuZHYtanMtdi1mb3RvJykucmVtb3ZlKCk7CiAgICAgICAgICAgIG4uZmluZCgnLmR2LWpzLXYtdmFyaW9zJykucmVtb3ZlQXR0cignaGlkZGVuJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRoaXMuX2ZvdG8obi5maW5kKCcuZHYtanMtdi1mb3RvJyksIHYuZm90byk7CiAgICB9CgogICAgX2JvdG9uZXMoY2FqYSwgYWNjaW9uZXMsIGRldikgewoKICAgICAgICBjYWphLmVtcHR5KCk7CgogICAgICAgIGFjY2lvbmVzLmZvckVhY2goYSA9PiB7CgogICAgICAgICAgICBjb25zdCBiID0gdGhpcy5fY2xvbignYm90b24nKTsKCiAgICAgICAgICAgIGlmICghYi5sZW5ndGgpIHJldHVybjsKCiAgICAgICAgICAgIGlmIChhLmljb24pIGIuZmluZCgnaWNvbmlmeS1pY29uJykuYXR0cignaWNvbicsIGEuaWNvbik7CiAgICAgICAgICAgIGVsc2UgYi5maW5kKCdpY29uaWZ5LWljb24nKS5yZW1vdmUoKTsKCiAgICAgICAgICAgIGIuZmluZCgnc3BhbicpLnRleHQoYS5sYWJlbCB8fCAnJyk7CiAgICAgICAgICAgIGIub24oJ2NsaWNrJywgKCkgPT4gdGhpcy5fYWNjaW9uKGEsIGRldikpOwoKICAgICAgICAgICAgY2FqYS5hcHBlbmQoYik7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgKiAgTE8gUVVFIEhBQ0VOIExPUyBCT1RPTkVTCiAgICAgKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KCiAgICBfYWNjaW9uKGEsIGRldikgewoKICAgICAgICBpZiAoYS5pZCA9PT0gJ2ZvdG9zJykgcmV0dXJuIHRoaXMuX2FkanVudGFyKGRldik7CgogICAgICAgIGlmIChhLnVybCkgdGhpcy5faXIoYS51cmwpOwogICAgfQoKICAgIC8qKiBQb3IgZWwgbWVuw7ogZGVsIHBhbmVsLCBzaW4gcmVjYXJnYXIgKHZlciBgQWNjb3VudE5hdmApLiAqLwogICAgX2lyKHVybCkgewoKICAgICAgICBpZiAod2luZG93LkFjY291bnROYXYpIEFjY291bnROYXYuZ28odXJsKTsKICAgICAgICBlbHNlIGxvY2F0aW9uLmhyZWYgPSB1cmw7CiAgICB9CgogICAgLyog4pSA4pSAIEVMIE1FTsOaIERFTCDCq+KLrsK7IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgIF9hYnJpck1lbnUoZXYsIGZpbGEsIGRldikgewoKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICAgICAgY29uc3QgY2FqYSA9IGZpbGEuZmluZCgnLmR2LWYtbWVudS1jYWphJyk7CiAgICAgICAgY29uc3QgeWFBYmllcnRvID0gY2FqYS5maW5kKCcuZHYtbWVudScpLmxlbmd0aDsKCiAgICAgICAgdGhpcy5fY2VycmFyTWVudSgpOwoKICAgICAgICBpZiAoeWFBYmllcnRvKSByZXR1cm47CgogICAgICAgIGNvbnN0IG1lbnUgPSB0aGlzLl9jbG9uKCdtZW51Jyk7CgogICAgICAgIGlmICghbWVudS5sZW5ndGgpIHJldHVybjsKCiAgICAgICAgaWYgKCFkZXYucGVkaWRvKSBtZW51LmZpbmQoJ1tkYXRhLW9wPSJwZWRpZG8iXScpLnJlbW92ZSgpOwoKICAgICAgICBtZW51LmZpbmQoJy5kdi1tZW51LW9wJykub24oJ2NsaWNrJywgZSA9PiB7CgogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwoKICAgICAgICAgICAgY29uc3Qgb3AgPSAkKGUuY3VycmVudFRhcmdldCkuYXR0cignZGF0YS1vcCcpOwoKICAgICAgICAgICAgdGhpcy5fY2VycmFyTWVudSgpOwoKICAgICAgICAgICAgaWYgKG9wID09PSAndmVyJykgICAgIHRoaXMuX2lyKCcvYWNjb3VudC9yZXR1cm5zLycgKyBkZXYuaWQpOwogICAgICAgICAgICBpZiAob3AgPT09ICdwZWRpZG8nKSAgdGhpcy5faXIoJy9hY2NvdW50L29yZGVycy8nICsgZGV2LnBlZGlkby5pZCk7CiAgICAgICAgICAgIGlmIChvcCA9PT0gJ3NvcG9ydGUnKSB0aGlzLl9zb3BvcnRlKGRldik7CiAgICAgICAgICAgIGlmIChvcCA9PT0gJ2NvcGlhcicpICB0aGlzLl9jb3BpYXIoZGV2LmNvZGUpOwogICAgICAgIH0pOwoKICAgICAgICBjYWphLmFwcGVuZChtZW51KTsKICAgICAgICBmaWxhLmFkZENsYXNzKCdjb24tbWVudScpOwogICAgfQoKICAgIF9jZXJyYXJNZW51KCkgewogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuZHYtbWVudScpLnJlbW92ZSgpOwogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuZHYtZmlsYS5jb24tbWVudScpLnJlbW92ZUNsYXNzKCdjb24tbWVudScpOwogICAgfQoKICAgIF9jb3BpYXIodGV4dG8pIHsKCiAgICAgICAgY29uc3QgYXZpc28gPSAoKSA9PiB0aGlzLl9hdmlzYXIoJ0PDs2RpZ28gJyArIHRleHRvICsgJyBjb3BpYWRvLicpOwoKICAgICAgICAvKiBFbCBwb3J0YXBhcGVsZXMgbW9kZXJubyBSRUNIQVpBIGxhIGVzY3JpdHVyYSBzaSBsYSBww6FnaW5hIG5vIHRpZW5lIGVsCiAgICAgICAgICAgZm9jbyBvIG5vIGVzIHVuIGNvbnRleHRvIHNlZ3VybywgeSBlbnRvbmNlcyBzZSBwcnVlYmEgZWwgY2FtaW5vCiAgICAgICAgICAgY2zDoXNpY286IHVuIGNhbXBvIGZ1ZXJhIGRlIGxhIHZpc3RhLCBzZWxlY2Npb25hZG8geSBgY29weWAuICovCiAgICAgICAgY29uc3QgY2xhc2ljbyA9ICgpID0+IHsKCiAgICAgICAgICAgIGNvbnN0IGNhbXBvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKCiAgICAgICAgICAgIGNhbXBvLnZhbHVlID0gdGV4dG87CiAgICAgICAgICAgIGNhbXBvLnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCAncmVhZG9ubHknKTsKICAgICAgICAgICAgY2FtcG8uc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnOwogICAgICAgICAgICBjYW1wby5zdHlsZS5sZWZ0ID0gJy0xMDAwMHB4JzsKCiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FtcG8pOwogICAgICAgICAgICBjYW1wby5zZWxlY3QoKTsKCiAgICAgICAgICAgIGxldCBvayA9IGZhbHNlOwoKICAgICAgICAgICAgdHJ5IHsgb2sgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOyB9IGNhdGNoIChlKSB7IG9rID0gZmFsc2U7IH0KCiAgICAgICAgICAgIGNhbXBvLnJlbW92ZSgpOwoKICAgICAgICAgICAgaWYgKG9rKSBhdmlzbygpOwogICAgICAgICAgICBlbHNlIHRoaXMuX2F2aXNhcignTm8gc2UgaGEgcG9kaWRvIGNvcGlhcjogZWwgY8OzZGlnbyBlcyAnICsgdGV4dG8gKyAnLicsICdlcnJvcicpOwogICAgICAgIH07CgogICAgICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KSB7CiAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHRvKS50aGVuKGF2aXNvLCBjbGFzaWNvKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY2xhc2ljbygpOwogICAgfQoKICAgIF9hdmlzYXIodGV4dG8sIHRpcG8pIHsKCiAgICAgICAgaWYgKHR5cGVvZiBUTm90aWZ5ICE9PSAndW5kZWZpbmVkJyAmJiBUTm90aWZ5LnRvYXN0KSBUTm90aWZ5LnRvYXN0KHRleHRvLCB7IHR5cGU6IHRpcG8gfHwgJ3N1Y2Nlc3MnIH0pOwogICAgfQoKICAgIC8qKgogICAgICogwqtDT05UQUNUQVIgQ09OIFNPUE9SVEXCuyBBQlJFIFVOQSBJTkNJREVOQ0lBIGVuIHVuIG92ZXJsYXkgYXF1w60gbWlzbW8sCiAgICAgKiBjb24gZWwgbWlzbW8gYWJyaWRvciBxdWUgwqtNaXMgcGVkaWRvc8K7IChgU3VwcG9ydFRpY2tldEZvcm1gKS4gRGVzZGUgdW5hCiAgICAgKiBkZXZvbHVjacOzbiB2YSB2aW5jdWxhZGEgYSBzdSBwZWRpZG8sIHF1ZSBlcyBkZSBsbyBxdWUgc2UgaGFibGEuCiAgICAgKi8KICAgIF9zb3BvcnRlKGRldikgewoKICAgICAgICBjb25zdCBwZWRpZG8gPSBkZXYgJiYgZGV2LnBlZGlkbyA/IGRldi5wZWRpZG8uaWQgOiAwOwoKICAgICAgICBpZiAoIXdpbmRvdy5TdXBwb3J0VGlja2V0Rm9ybSkgewogICAgICAgICAgICB0aGlzLl9pcihwZWRpZG8gPyAnL2FjY291bnQvc3VwcG9ydD9vcmRlcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBlZGlkbykgOiAnL2FjY291bnQvc3VwcG9ydCcpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB3aW5kb3cuU3VwcG9ydFRpY2tldEZvcm0ub3Blbih7CiAgICAgICAgICAgIG9yZGVySWQ6IHBlZGlkbywKICAgICAgICAgICAgc3VidGl0bGU6IGRldiA/ICgnSW5jaWRlbmNpYSBzb2JyZSBsYSBkZXZvbHVjacOzbiAnICsgZGV2LmNvZGUpIDogbnVsbCwKICAgICAgICB9KTsKICAgIH0KCiAgICAvKiDilIDilIAgQURKVU5UQVIgRk9UT1Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgLyoqCiAgICAgKiBFbCBtaXNtbyBzdWJpZG9yIGRlIGxhIGZpY2hhIGRlIGxhIGRldm9sdWNpw7NuLCBBIEZJUk1FOiBsYSBkZXZvbHVjacOzbgogICAgICogeWEgZXhpc3RlLCBhc8OtIHF1ZSBjYWRhIGFyY2hpdm8gc2UgbGUgZW5nYW5jaGEgZW4gY3VhbnRvIHRlcm1pbmEgZGUKICAgICAqIHN1YmlyIChgUE9TVCAvYWNjb3VudC9yZXR1cm5zL3tpZH0vYXR0YWNobWVudHNgKS4KICAgICAqLwogICAgX2FkanVudGFyKGRldikgewoKICAgICAgICBpZiAodHlwZW9mIFRVcGxvYWRlciAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgVE92ZXJsYXlXaW4gPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIHRoaXMuX2lyKCcvYWNjb3VudC9yZXR1cm5zLycgKyBkZXYuaWQpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBjb25zdCBjYWphID0gdGhpcy5fY2xvbignYWRqdW50YXInKTsKCiAgICAgICAgY29uc3Qgc3ViaWRvciA9IFRVcGxvYWRlci5jcmVhdGUoewogICAgICAgICAgICBpZDogJ2R2QWRqdW50YXInICsgRGF0ZS5ub3coKSwKICAgICAgICAgICAgYXBpOiAnL2ZpbGVzL3VwbG9hZCcsCiAgICAgICAgICAgIHBocFBhcmFtTmFtZTogJ2ZpbGUnLAogICAgICAgICAgICBhdXRvU2VuZDogdHJ1ZSwKICAgICAgICAgICAgbXVsdGlTZWxlY3Q6IHRydWUsCiAgICAgICAgICAgIG1heEZpbGVzOiA1LAogICAgICAgICAgICBtYXhGaWxlU2l6ZU1COiAxMiwKICAgICAgICAgICAgZXh0ZW5zaW9uczogJ2pwZyBwbmcganBlZyBnaWYgd2VicCBwZGYnLAogICAgICAgICAgICBhY2NlcHQ6ICcuanBnLC5qcGVnLC5wbmcsLmdpZiwud2VicCwucGRmJywKICAgICAgICAgICAgc2hvd1VwbG9hZEluZm86IHRydWUsCiAgICAgICAgICAgIG9uVXBsb2FkQ29tcGxldGU6IChldmVudCwgcmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHN1YmlkbyA9IHJlc3BvbnNlID8/IGV2ZW50Py5kYXRhID8/IGV2ZW50OwogICAgICAgICAgICAgICAgY29uc3QgaWQgPSBzdWJpZG8/Ll9pZCA/PyBzdWJpZG8/LmlkOwoKICAgICAgICAgICAgICAgIGlmIChpZCkgdGhpcy5fZW5nYW5jaGFyQXJjaGl2byhkZXYsIGlkKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25VcGxvYWRFcnJvcjogKGV2ZW50LCBlcnJvcikgPT4gewogICAgICAgICAgICAgICAgdGhpcy5fYXZpc2FyKGVycm9yPy5tZXNzYWdlID8/IGV2ZW50Py5kYXRhPy5tZXNzYWdlID8/ICdObyBzZSBwdWRvIHN1YmlyIGVsIGFyY2hpdm8uJywgJ2Vycm9yJyk7CiAgICAgICAgICAgIH0sCiAgICAgICAgfSk7CgogICAgICAgIGNhamEuZmluZCgnLmR2LWpzLXN1Ymlkb3InKS5hcHBlbmQoc3ViaWRvci5odG1sKTsKCiAgICAgICAgY29uc3Qgd2luID0gVE92ZXJsYXlXaW4uY3JlYXRlKHsKICAgICAgICAgICAgdGl0bGU6IFRPdmVybGF5V2luLmNhYmVjZXJhKHsKICAgICAgICAgICAgICAgIGljb246ICdsdWNpZGU6Y2FtZXJhJywKICAgICAgICAgICAgICAgIHRpdGxlOiAnQWRqdW50YXIgZm90b3MnLAogICAgICAgICAgICAgICAgc3VidGl0bGU6ICdEZXZvbHVjacOzbiAnICsgZGV2LmNvZGUgKyAoZGV2LnBlZGlkbyA/ICcgwrcgcGVkaWRvICcgKyBkZXYucGVkaWRvLnJlZiA6ICcnKSwKICAgICAgICAgICAgfSksCiAgICAgICAgICAgIGNvbnRlbnQ6IGNhamEsCiAgICAgICAgICAgIGNsb3NlSWNvbjogdHJ1ZSwKICAgICAgICAgICAgY2xvc2VPbkNsaWNrT3V0OiB0cnVlLAogICAgICAgICAgICAvKiBBIExBIE1FRElEQSBERUwgQ09OVEVOSURPLiBTaW4gZXN0byBsYSB2ZW50YW5hIGNvbmdlbGFiYSBzdQogICAgICAgICAgICAgICB0YW1hw7FvIGFsIGFicmlyc2UgLS1jb24gZWwgc3ViaWRvciBvIGxhIGxpc3RhIGHDum4gc2luIHBpbnRhci0tCiAgICAgICAgICAgICAgIHkgbG8gcXVlIGxsZWdhYmEgZGVzcHXDqXMgc2Fsw61hIGVuIHVuYSBjYWphIGRlIDE4MHB4IGNvbiBiYXJyYS4gKi8KICAgICAgICAgICAgYXV0b1NpemU6IHRydWUsCiAgICAgICAgfSk7CgogICAgICAgIHdpbi5zaG93KCk7CiAgICB9CgogICAgX2VuZ2FuY2hhckFyY2hpdm8oZGV2LCBmaWxlSWQpIHsKCiAgICAgICAgVE5ldENvbS5QT1NUKCcvYWNjb3VudC9yZXR1cm5zLycgKyBkZXYuaWQgKyAnL2F0dGFjaG1lbnRzJywgeyBmaWxlczogW2ZpbGVJZF0gfSwgcmVzcCA9PiB7CgogICAgICAgICAgICBpZiAocmVzcCAmJiByZXNwLm9rKSB7IHRoaXMuX2F2aXNhcignQXJjaGl2byBhw7FhZGlkbyBhIGxhIGRldm9sdWNpw7NuICcgKyBkZXYuY29kZSArICcuJyk7IHJldHVybjsgfQoKICAgICAgICAgICAgdGhpcy5fYXZpc2FyKHJlc3A/LmVycm9yPy5tZXNzYWdlID8/ICdFbCBhcmNoaXZvIHNlIHN1YmnDsyBwZXJvIG5vIHNlIHB1ZG8gYcOxYWRpci4nLCAnZXJyb3InKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKiDilIDilIAgU09MSUNJVEFSIERFVk9MVUNJw5NOIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgIC8qKgogICAgICogVW5hIGRldm9sdWNpw7NuIGVzIFNJRU1QUkUgZGUgdW4gcGVkaWRvOiBzZSBlbnNlw7FhbiBsb3MgcXVlIGxhIGFkbWl0ZW4geQogICAgICogYWwgZWxlZ2lyIHVubyBzZSBhYnJlIGVsIGZvcm11bGFyaW8gZGUgc2llbXByZSAoYFRSZXR1cm5PcmRlcmApLCBlbCBtaXNtbwogICAgICogcXVlIHNhbGUgZGVzZGUgbGEgZmljaGEgZGVsIHBlZGlkby4KICAgICAqLwogICAgX2VsZWdpclBlZGlkbygpIHsKCiAgICAgICAgaWYgKHR5cGVvZiBUT3ZlcmxheVdpbiA9PT0gJ3VuZGVmaW5lZCcpIHsgdGhpcy5faXIoJy9hY2NvdW50L29yZGVycycpOyByZXR1cm47IH0KCiAgICAgICAgY29uc3QgY2FqYSA9IHRoaXMuX2Nsb24oJ2VsZWdpcicpOwoKICAgICAgICBjb25zdCB3aW4gPSBUT3ZlcmxheVdpbi5jcmVhdGUoewogICAgICAgICAgICB0aXRsZTogVE92ZXJsYXlXaW4uY2FiZWNlcmEoewogICAgICAgICAgICAgICAgaWNvbjogJ2x1Y2lkZTp1bmRvLTInLAogICAgICAgICAgICAgICAgdGl0bGU6ICdTb2xpY2l0YXIgZGV2b2x1Y2nDs24nLAogICAgICAgICAgICAgICAgc3VidGl0bGU6ICdFbGlnZSBlbCBwZWRpZG8gZGVsIHF1ZSBxdWllcmVzIGRldm9sdmVyIGFsZ28nLAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgY29udGVudDogY2FqYSwKICAgICAgICAgICAgY2xvc2VJY29uOiB0cnVlLAogICAgICAgICAgICBjbG9zZU9uQ2xpY2tPdXQ6IHRydWUsCiAgICAgICAgICAgIC8qIEEgTEEgTUVESURBIERFTCBDT05URU5JRE8uIFNpbiBlc3RvIGxhIHZlbnRhbmEgY29uZ2VsYWJhIHN1CiAgICAgICAgICAgICAgIHRhbWHDsW8gYWwgYWJyaXJzZSAtLWNvbiBlbCBzdWJpZG9yIG8gbGEgbGlzdGEgYcO6biBzaW4gcGludGFyLS0KICAgICAgICAgICAgICAgeSBsbyBxdWUgbGxlZ2FiYSBkZXNwdcOpcyBzYWzDrWEgZW4gdW5hIGNhamEgZGUgMTgwcHggY29uIGJhcnJhLiAqLwogICAgICAgICAgICBhdXRvU2l6ZTogdHJ1ZSwKICAgICAgICB9KTsKCiAgICAgICAgd2luLnNob3coKTsKCiAgICAgICAgVE5ldENvbS5HRVQoJy9hY2NvdW50L3JldHVybnMvcmV0dXJuYWJsZScsIHt9LCByZXNwID0+IHsKCiAgICAgICAgICAgIGNhamEuZmluZCgnLmR2LWpzLWVsZWdpci1jYXJnYW5kbycpLmF0dHIoJ2hpZGRlbicsICdoaWRkZW4nKTsKCiAgICAgICAgICAgIGNvbnN0IHBlZGlkb3MgPSAocmVzcCAmJiByZXNwLm9rICYmIHJlc3AuZGF0YSkgPyAocmVzcC5kYXRhLm9yZGVycyB8fCBbXSkgOiBbXTsKCiAgICAgICAgICAgIGlmICghcGVkaWRvcy5sZW5ndGgpIHsgY2FqYS5maW5kKCcuZHYtanMtZWxlZ2lyLXZhY2lvJykucmVtb3ZlQXR0cignaGlkZGVuJyk7IHJldHVybjsgfQoKICAgICAgICAgICAgY29uc3QgbGlzdGEgPSBjYWphLmZpbmQoJy5kdi1qcy1lbGVnaXItbGlzdGEnKTsKCiAgICAgICAgICAgIHBlZGlkb3MuZm9yRWFjaChwID0+IHsKCiAgICAgICAgICAgICAgICBjb25zdCBmID0gdGhpcy5fY2xvbignZWxlZ2lyLWZpbGEnKTsKCiAgICAgICAgICAgICAgICBpZiAoIWYubGVuZ3RoKSByZXR1cm47CgogICAgICAgICAgICAgICAgdGhpcy5fZm90byhmLmZpbmQoJy5kdi1qcy1lLWZvdG8nKSwgcC5mb3RvKTsKICAgICAgICAgICAgICAgIGYuZmluZCgnLmR2LWpzLWUtcmVmJykudGV4dCgnUGVkaWRvICcgKyAocC5yZWYgfHwgJycpKTsKICAgICAgICAgICAgICAgIGYuZmluZCgnLmR2LWpzLWUtcGllJykudGV4dChbcC5mZWNoYSwgcC5wcm9kdWN0b3MgKyAocC5wcm9kdWN0b3MgPT09IDEgPyAnIHByb2R1Y3RvJyA6ICcgcHJvZHVjdG9zJyldLmZpbHRlcihCb29sZWFuKS5qb2luKCcgwrcgJykpOwogICAgICAgICAgICAgICAgZi5maW5kKCcuZHYtanMtZS10b3RhbCcpLnRleHQocC50b3RhbCB8fCAnJyk7CgogICAgICAgICAgICAgICAgZi5vbignY2xpY2snLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsgd2luLmNsb3NlKCk7IH0gY2F0Y2ggKGUpIHsgLyogeWEgY2VycmFkYSAqLyB9CiAgICAgICAgICAgICAgICAgICAgVE5ldENvbS5HRVQoJy9hY2NvdW50L29yZGVycy8nICsgcC5pZCArICcvcmV0dXJucy9mb3JtJyk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBsaXN0YS5hcHBlbmQoZik7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICogIExBUyBQUkVHVU5UQVMgRlJFQ1VFTlRFUwogICAgICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCgogICAgX3ByZWd1bnRhcyhsaXN0YSkgewoKICAgICAgICBjb25zdCBjYXJkID0gdGhpcy5odG1sLmZpbmQoJy5kdi1qcy1mYXEtY2FyZCcpOwogICAgICAgIGNvbnN0IGNhamEgPSB0aGlzLmh0bWwuZmluZCgnLmR2LWpzLWZhcScpLmVtcHR5KCk7CgogICAgICAgIGlmICghbGlzdGEubGVuZ3RoKSB7IGNhcmQuYXR0cignaGlkZGVuJywgJ2hpZGRlbicpOyByZXR1cm47IH0KCiAgICAgICAgbGlzdGEuZm9yRWFjaChwID0+IHsKCiAgICAgICAgICAgIGNvbnN0IGYgPSB0aGlzLl9jbG9uKCdmYXEnKTsKCiAgICAgICAgICAgIGlmICghZi5sZW5ndGgpIHJldHVybjsKCiAgICAgICAgICAgIGYuZmluZCgnc3BhbicpLmZpcnN0KCkudGV4dChwLnEgfHwgJycpOwogICAgICAgICAgICBmLm9uKCdjbGljaycsICgpID0+IHRoaXMuX3Jlc3B1ZXN0YShwKSk7CgogICAgICAgICAgICBjYWphLmFwcGVuZChmKTsKICAgICAgICB9KTsKCiAgICAgICAgY2FyZC5yZW1vdmVBdHRyKCdoaWRkZW4nKTsKICAgIH0KCiAgICAvKiogTGEgcmVzcHVlc3RhLCBzaW4gc2FsaXIgZGUgbGEgcGFudGFsbGEuICovCiAgICBfcmVzcHVlc3RhKHApIHsKCiAgICAgICAgaWYgKHR5cGVvZiBUT3ZlcmxheVdpbiA9PT0gJ3VuZGVmaW5lZCcpIHsgbG9jYXRpb24uaHJlZiA9ICcvYXl1ZGEnOyByZXR1cm47IH0KCiAgICAgICAgVE92ZXJsYXlXaW4uY3JlYXRlKHsKICAgICAgICAgICAgdGl0bGU6IFRPdmVybGF5V2luLmNhYmVjZXJhKHsKICAgICAgICAgICAgICAgIGljb246ICdsdWNpZGU6Y2lyY2xlLWhlbHAnLAogICAgICAgICAgICAgICAgdGl0bGU6IHAucSB8fCAnQXl1ZGEnLAogICAgICAgICAgICAgICAgc3VidGl0bGU6ICdQcmVndW50YXMgZnJlY3VlbnRlcyBzb2JyZSBkZXZvbHVjaW9uZXMnLAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgY29udGVudDogJCgnPHA+PC9wPicpLmNzcyh7IG1hcmdpbjogMCwgbGluZUhlaWdodDogMS42IH0pLnRleHQocC5hIHx8ICcnKSwKICAgICAgICAgICAgY2xvc2VJY29uOiB0cnVlLAogICAgICAgICAgICBjbG9zZU9uQ2xpY2tPdXQ6IHRydWUsCiAgICAgICAgfSkuc2hvdygpOwogICAgfQp9CgovKiBTaW4gZXN0byBsYSBwYW50YWxsYSBzYWxlIEVOIEJMQU5DTzogZWwgY2FyZ2Fkb3IgZGV0ZWN0YSBsYXMgY2xhc2VzIG51ZXZhcwogICBwb3IgbGFzIGNsYXZlcyBxdWUgYXBhcmVjZW4gZW4gYHdpbmRvd2AuICovCndpbmRvdy5UQWNjb3VudFJldHVybnMgPSBUQWNjb3VudFJldHVybnM7Cg0KDQo8L3NjcmlwdD4NCg0KPC9tb2R1bGU+DQoNCg==","TSupportTicketForm":"PG1vZHVsZSBuYW1lPSJUU3VwcG9ydFRpY2tldEZvcm0iPg0KDQoNCg0KDQoNCjx0ZW1wbGF0ZSBuYW1lPSJUU3VwcG9ydFRpY2tldEZvcm0iICA+CjxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgoNCg0KCjwvdGVtcGxhdGU+DQoNCjxzdHlsZSBuYW1lPSJUU3VwcG9ydFRpY2tldEZvcm0iPi8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogKiAgRUwgT1ZFUkxBWSBERSDCq0FCUklSIEVYUEVESUVOVEXCuywgRU4gVkVSREUKICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAqCiAqIFZpdsOtYSBlbiBgVEFjY291bnRTdXBwb3J0LmNzc2AsIHkgYWjDrSBzb2xvIHNlcnbDrWEgY3VhbmRvIGVsIG92ZXJsYXkgc2UgYWJyw61hCiAqIGRlc2RlIGxhIHNlY2Npw7NuIGRlIFNvcG9ydGU6IGVsIG1pc21vIGZvcm11bGFyaW8gYWJpZXJ0byBkZXNkZSB1biBwZWRpZG8KICogc2Fsw61hIGNvbiBlbCBib3TDs24gbmVncm8gZGVsIHNpdGlvLiBWaWFqYSBjb24gZWwgY29tcG9uZW50ZSBxdWUgbW9udGEgZWwKICogb3ZlcmxheSwgcXVlIGVzIGRvbmRlIHRpZW5lIHF1ZSBlc3Rhci4KICoKICogTGFzIGNsYXNlcyBOTyBzZSBjYW1iaWFuIC0tYGJ0bi1zZWNvbmRhcnlgIGVsIHF1ZSBjaWVycmEgeSBgYnRuLXByaW1hcnlgIGVsCiAqIHF1ZSBlc2NyaWJlLCBxdWUgZXMgbGEgcmVnbGEgZGVsIHByb3llY3RvLS06IGxvIHF1ZSBjYW1iaWEgZXMgY8OzbW8gc2UgcGludGFuCiAqIGFxdcOtLiBZIHNlIGVzY29wYSBiYWpvIGAuc3Atb3ZlcmxheWAsIHF1ZSBlcyBsYSBjbGFzZSBxdWUgbGUgcG9uZSBlbCBhYnJpZG9yOgogKiBlbCBvdmVybGF5IGN1ZWxnYSBkZWwgYm9keSwgYXPDrSBxdWUgc2luIGVsbGEgZXN0byBwaW50YXLDrWEgZGUgdmVyZGUgbG9zCiAqIGJvdG9uZXMgZGUgdG9kYSBsYSBww6FnaW5hLgogKgogKiDilIDilIAgWSBFTCBGT05ETyBWQSBDT04gYCFpbXBvcnRhbnRgLCBRVUUgTk8gRVMgVU4gREVTQ1VJRE8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqCiAqIEVsIGJ1bmRsZSBkZWwgc2l0aW8gKGBib290LSouY3NzYCkgZGVjbGFyYQogKiBgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6IzFlMjkzYiAhaW1wb3J0YW50fWAuIFVuIGAhaW1wb3J0YW50YCBnYW5hIGEKICogY3VhbHF1aWVyIGVzcGVjaWZpY2lkYWQsIGFzw60gcXVlIGVzdGEgcmVnbGEgLS10YWwgY29tbyBlc3RhYmEgZXNjcml0YSBlbgogKiBgVEFjY291bnRTdXBwb3J0LmNzc2AtLSBhcGxpY2FiYSBlbCBCT1JERSB2ZXJkZSB5IG5vIGVsIGZvbmRvOiBlbCBib3TDs24KICogc2Fsw61hIGF6dWwgcGl6YXJyYSBjb24gdW4gZmlsbyB2ZXJkZSwgbWVkaWRvIGNvbiBgZ2V0Q29tcHV0ZWRTdHlsZWAgZWwKICogMTIvMDkvMjAyNiwgeSBlbCBjb21lbnRhcmlvIGRlIGFxdWVsbGEgaG9qYSBkZWPDrWEgcXVlIGVyYSB2ZXJkZSBkZXNkZSBlbAogKiBkw61hIHF1ZSBzZSBlc2NyaWJpw7MuIFNlIGNvbXBlbnNhIGFxdcOtLCBhY290YWRvIGFsIG92ZXJsYXk7IGxvIHF1ZSBoYXkgcXVlCiAqIHF1aXRhciBhbGfDum4gZMOtYSBlcyBlbCBgIWltcG9ydGFudGAgZGVsIGJ1bmRsZSwgbm8gZXN0YSBsw61uZWEuICovCi5zcC1vdmVybGF5IC5idG4tcHJpbWFyeXsKICAgIGJhY2tncm91bmQ6dmFyKC0tc2QtdmVyZGUsIzA0NzEzYSkgIWltcG9ydGFudDsKICAgIGJvcmRlci1jb2xvcjp2YXIoLS1zZC12ZXJkZSwjMDQ3MTNhKTsKICAgIGNvbG9yOiNmZmY7Cn0KLnNwLW92ZXJsYXkgLmJ0bi1wcmltYXJ5OmhvdmVyewogICAgYmFja2dyb3VuZDp2YXIoLS1zZC12ZXJkZS1vc2N1cm8sIzAwNWMyZCkgIWltcG9ydGFudDsKICAgIGJvcmRlci1jb2xvcjp2YXIoLS1zZC12ZXJkZS1vc2N1cm8sIzAwNWMyZCk7Cn0KLnNwLW92ZXJsYXkgLlRGb3JtIGlucHV0OmZvY3VzLAouc3Atb3ZlcmxheSAuVEZvcm0gdGV4dGFyZWE6Zm9jdXN7CiAgICBib3JkZXItY29sb3I6dmFyKC0tc2QtdmVyZGUsIzA0NzEzYSk7CiAgICBib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDQsMTEzLDU4LC4xMCk7Cn0KDQoNCjwvc3R5bGU+DQoNCjxzY3JpcHQgbmFtZT0iVFN1cHBvcnRUaWNrZXRGb3JtIiA+LyoqCiAqIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogKiAgQUJSSVIgVU4gRVhQRURJRU5URSBERSBTT1BPUlRFIOKAlCB1biBzb2xvIGFicmlkb3IgcGFyYSBsb3MgdHJlcyBzaXRpb3MKICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAqCiAqIMKrU29saWNpdGFyIGF5dWRhwrsgZXN0w6EgZW4gbGEgZmljaGEgZGUgdW4gcGVkaWRvLCBlbiBlbCBsaXN0YWRvIGRlIMKrTWlzCiAqIHBlZGlkb3PCuyB5IGVuIGxhIHNlY2Npw7NuIGRlIFNvcG9ydGUuIEVuIGxvcyB0cmVzIGhhY2UgbG8gbWlzbW8sIHkgbG8gaGFjZQogKiBBUVXDjS4KICoKICog4pSA4pSAIEVMIE9WRVJMQVkgU0UgQUJSRSBET05ERSBFU1TDgSBFTCBVU1VBUklPIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogKgogKiBBbnRlcyBsYSBmaWNoYSB5IGVsIGxpc3RhZG8gbmF2ZWdhYmFuIGEgYD9yb3V0ZT1zdXBwb3J0Jm9yZGVyPXtpZH1gIHkgZXJhIGxhCiAqIHNlY2Npw7NuIGRlIFNvcG9ydGUgbGEgcXVlIGFicsOtYSBlbCBmb3JtdWxhcmlvIGFsIG1vbnRhcnNlLiBFbCBjbGllbnRlIHB1bHNhYmEKICogwqtTb2xpY2l0YXIgYXl1ZGHCuyB5IGxhIHBhbnRhbGxhIHNlIGxlIGliYTogcGVyZMOtYSBkZSB2aXN0YSBlbCBwZWRpZG8gLS1sYXMKICogbMOtbmVhcywgZWwgZW52w61vLCBlbCBuw7ptZXJvLS0ganVzdG8gY3VhbmRvIHRlbsOtYSBxdWUgY29udGFyIHF1w6kgaGFiw61hIHBhc2FkbwogKiBjb24gw6lsLiBBaG9yYSBlbCBmb3JtdWxhcmlvIHNhbGUgZW5jaW1hIGRlbCBwZWRpZG8sIHkgYSBsYSBzZWNjacOzbiBkZSBTb3BvcnRlCiAqIHNlIHZhIERFU1BVw4lTLCBjb24gZWwgZXhwZWRpZW50ZSB5YSBhYmllcnRvIHkgc3UgaGlsbyBkZWxhbnRlLgogKgogKiDilIDilIAgTk8gSEFZIE1BUkNBRE8sIFkgTk8gRVMgVU4gREVTQ1VJRE8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqCiAqIEVsIGZvcm11bGFyaW8gbG8gZGVjbGFyYSBlbCBzZXJ2aWRvciBjb24gZWwgRFNMIChgL2FjY291bnQvc3VwcG9ydC9mb3JtYCk6CiAqIGFzdW50bywgZWwgcGVkaWRvIC0tcXVlIGRlY2lkZSBlbCB0aXBvOiBjb24gcGVkaWRvIGVzIHVuYSBJTkNJREVOQ0lBLCBzaW4gw6lsCiAqIHVuYSBDT05TVUxUQS0tIHkgZWwgbWVuc2FqZS4gQXPDrSBoZXJlZGEgdmFsaWRhY2nDs24sIGVycm9yZXMgcG9yIGNhbXBvIHkgZWwKICogZ3VhcmRhZG8gZGUgYFRGb3JtYCBzaW4gZXNjcmliaXIgbmkgdW4gYDxpbnB1dD5gLiBMbyDDum5pY28gcXVlIHZpdmUgYXF1w60gZXMKICogZWwgY29tcG9ydGFtaWVudG8uCiAqLwp3aW5kb3cuU3VwcG9ydFRpY2tldEZvcm0gPSB7CgogICAgLyoqCiAgICAgKiBFTlNFw5FBIEVMIEZPUk1VTEFSSU8gRU4gVU4gT1ZFUkxBWS4KICAgICAqCiAgICAgKiAgIG9yZGVySWQgICAgZWwgcGVkaWRvIGRlbCBxdWUgc2UgaGFibGE7IHNpbiDDqWwgc2FsZSB1bmEgY29uc3VsdGEgZ2VuZXJhbAogICAgICogICBzdWJ0aXRsZSAgIGVsIHN1YnTDrXR1bG8gZGUgbGEgY2FiZWNlcmE7IGhheSB1biBkZWZlY3RvIHJhem9uYWJsZQogICAgICogICBvbkNyZWF0ZWQgIHF1w6kgaGFjZXIgY29uIGVsIGV4cGVkaWVudGUgcmVjacOpbiBhYmllcnRvLiBTaW4gZXN0byBzZSB2YSBhCiAgICAgKiAgICAgICAgICAgICAgbGEgc2VjY2nDs24gZGUgU29wb3J0ZSwgcXVlIGVzIGxvIHF1ZSBlc3BlcmEgcXVpZW4gbG8gYWJyacOzCiAgICAgKiAgICAgICAgICAgICAgZGVzZGUgdW4gcGVkaWRvCiAgICAgKi8KICAgIG9wZW46IGZ1bmN0aW9uIChvcGNpb25lcykgewoKICAgICAgICBjb25zdCBvICAgPSBvcGNpb25lcyB8fCB7fTsKICAgICAgICBjb25zdCB5byAgPSB0aGlzOwogICAgICAgIGNvbnN0IHVybCA9ICcvYWNjb3VudC9zdXBwb3J0L2Zvcm0nICsgKG8ub3JkZXJJZCA/ICgnP29yZGVyPScgKyBlbmNvZGVVUklDb21wb25lbnQoby5vcmRlcklkKSkgOiAnJyk7CgogICAgICAgIFROZXRDb20uR0VUKHVybCwge30sIGZ1bmN0aW9uIChyZXNwKSB7CgogICAgICAgICAgICBjb25zdCBkID0gKHJlc3AgJiYgcmVzcC5kYXRhKSA/IHJlc3AuZGF0YSA6IHJlc3A7CgogICAgICAgICAgICBpZiAoIWQgfHwgIWQudHlwZSkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBUTm90aWZ5ID09PSAnZnVuY3Rpb24nICYmIFROb3RpZnkudG9hc3QpIFROb3RpZnkudG9hc3QoJ05vIGhlbW9zIHBvZGlkbyBhYnJpciBlbCBmb3JtdWxhcmlvJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSBURm9ybS5jcmVhdGUoZCk7CgogICAgICAgICAgICAvKiBMYSBjYWJlY2VyYSB2YSBjb24gZWwgaGVscGVyIGRlbCBwcm95ZWN0byAtLWljb25vLCB0w610dWxvIHkKICAgICAgICAgICAgICAgc3VidMOtdHVsbywgVE9ETyBhIGxhIGl6cXVpZXJkYS0tLCB5IGVsIHN1YnTDrXR1bG8gZGljZSBkZSBxdcOpIHZhCiAgICAgICAgICAgICAgIGxhIHZlbnRhbmEgY29uIGRhdG9zIHJlYWxlcyBlbiB2ZXogZGUgcmVwZXRpciBlbCB0w610dWxvLiAqLwogICAgICAgICAgICBjb25zdCBvdmVybGF5ID0gVE92ZXJsYXlXaW4uY3JlYXRlKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBUT3ZlcmxheVdpbi5jYWJlY2VyYSh7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2x1Y2lkZTpoZWFkcGhvbmVzJywKICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FicmlyIGV4cGVkaWVudGUgZGUgc29wb3J0ZScsCiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG8uc3VidGl0bGUgfHwgJ0NvbiB1biBwZWRpZG8gZXMgdW5hIGluY2lkZW5jaWE7IHNpbiDDqWwsIHVuYSBjb25zdWx0YSBnZW5lcmFsLicKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgY29udGVudDogZm9ybSwKICAgICAgICAgICAgICAgIGNsb3NlSWNvbjogdHJ1ZQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8qIEVsIG92ZXJsYXkgc2UgbW9udGEgRlVFUkEgZGUgbGEgcGFudGFsbGEgcXVlIGxvIGFicmUgLS1jdWVsZ2EgZGVsCiAgICAgICAgICAgICAgIGJvZHktLSwgYXPDrSBxdWUgZWwgQ1NTIGRlIGVzYSBwYW50YWxsYSBubyBsZSBhbGNhbnphLiBDb24gc3UKICAgICAgICAgICAgICAgcHJvcGlhIGNsYXNlIHPDrTogZXMgbG8gcXVlIGRlamEgcG9uZXIgZWwgYm90w7NuIHByaW5jaXBhbCBlbgogICAgICAgICAgICAgICB2ZXJkZSwgcG9ycXVlIGVsIGBidG4tcHJpbWFyeWAgZGVsIHNpdGlvIGVzIG5lZ3JvIHkgYXF1w60KICAgICAgICAgICAgICAgZGVzZW50b25hLiBMYSBob2phIHZpYWphIGNvbiBFU1RFIGNvbXBvbmVudGUsIG5vIGNvbiBsYSBzZWNjacOzbgogICAgICAgICAgICAgICBkZSBTb3BvcnRlOiBzaSBubywgZWwgb3ZlcmxheSBhYmllcnRvIGRlc2RlIHVuIHBlZGlkbyBzYWxkcsOtYSBjb24KICAgICAgICAgICAgICAgb3RybyBjb2xvciBxdWUgZWwgbWlzbW8gb3ZlcmxheSBhYmllcnRvIGRlc2RlIFNvcG9ydGUuICovCiAgICAgICAgICAgIG92ZXJsYXkuaHRtbC5hZGRDbGFzcygnc3Atb3ZlcmxheScpOwoKICAgICAgICAgICAgLyog4pSA4pSAIEVMIEVWRU5UTyBFUyBgb25TdWJtaXRgLCBOTyBgc3VibWl0dGVkYCDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgICAgICAgICAgICAgQ29tcHJvYmFkbyBlbiBgVEZvcm0uanNgOiBhbCBndWFyZGFyIGVtaXRlIGBvblNhdmVgIChjb24gZWwKICAgICAgICAgICAgICAgcGF5bG9hZCBxdWUgc2UgbWFuZMOzKSB5IGRlc3B1w6lzIGBvblN1Ym1pdGAgKGNvbiBsYSBSRVNQVUVTVEEgZGVsCiAgICAgICAgICAgICAgIHNlcnZpZG9yKS4gTm8gZXhpc3RlIG5pbmfDum4gYHN1Ym1pdHRlZGAgLS0gZW5nYW5jaGFkbyBhaMOtLCBlbAogICAgICAgICAgICAgICBmb3JtdWxhcmlvIGd1YXJkYWJhLCBkZWPDrWEgwqtEYXRvcyBlbnZpYWRvcyBjb3JyZWN0YW1lbnRlwrsgeSBsYQogICAgICAgICAgICAgICB2ZW50YW5hIHNlIHF1ZWRhYmEgYWJpZXJ0YSBjb21vIHNpIG5vIGh1YmllcmEgcGFzYWRvIG5hZGEuCgogICAgICAgICAgICAgICBgb25TdWJtaXRgIHNlIGRpc3BhcmEgVEFNQknDiU4gY3VhbmRvIGVsIGd1YXJkYWRvIGZhbGxhLCBhc8OtIHF1ZQogICAgICAgICAgICAgICBoYXkgcXVlIG1pcmFyIGxhIHJlc3B1ZXN0YSBhbnRlcyBkZSBjZXJyYXI6IGNlcnJhbmRvIGEgY2llZ2FzIHNlCiAgICAgICAgICAgICAgIHRpcmEgZWwgZm9ybXVsYXJpbyAtLXkgbG8gZXNjcml0by0tIGp1c3RvIGN1YW5kbyBlbCBjbGllbnRlCiAgICAgICAgICAgICAgIG5lY2VzaXRhIGNvcnJlZ2lyIHVuIGNhbXBvLiAqLwogICAgICAgICAgICBmb3JtLm9uKCdvblN1Ym1pdCcsIGZ1bmN0aW9uIChldiwgcmVzcHVlc3RhKSB7CgogICAgICAgICAgICAgICAgY29uc3QgciA9IChyZXNwdWVzdGEgJiYgcmVzcHVlc3RhLmRhdGEpID8gcmVzcHVlc3RhLmRhdGEgOiByZXNwdWVzdGE7CgogICAgICAgICAgICAgICAgaWYgKCFyZXNwdWVzdGEgfHwgcmVzcHVlc3RhLm9rID09PSBmYWxzZSB8fCAhciB8fCAhci5pZCkgcmV0dXJuOwoKICAgICAgICAgICAgICAgIG92ZXJsYXkuY2xvc2UoKTsKCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFROb3RpZnkgPT09ICdmdW5jdGlvbicgJiYgVE5vdGlmeS50b2FzdCkgewogICAgICAgICAgICAgICAgICAgIFROb3RpZnkudG9hc3QoJ0V4cGVkaWVudGUgYWJpZXJ0bzogJyArIChyLmNvZGUgfHwgJycpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG8ub25DcmVhdGVkID09PSAnZnVuY3Rpb24nKSB7IG8ub25DcmVhdGVkKHIpOyByZXR1cm47IH0KCiAgICAgICAgICAgICAgICB5by50b1NlY3Rpb24ocik7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgb3ZlcmxheS5zaG93KCk7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIC8qKgogICAgICogQSBMQSBTRUNDScOTTiBERSBTT1BPUlRFLCBDT04gRUwgRVhQRURJRU5URSBBQklFUlRPLgogICAgICoKICAgICAqIExhIFVSTCBsYSBjb21wb25lIGVsIFNFUlZJRE9SIChgZW5sYWNlYCwgcXVlIGVzCiAgICAgKiBgL2FjY291bnQvc3VwcG9ydC97dGlwb30ve2lkfWApIHkgZXNhIHJ1dGEgcmVkaXJpZ2UgYWwgcGFuZWwgY29uCiAgICAgKiBgP3JvdXRlPXN1cHBvcnQmaWQ9e3RpcG99LXtpZH1gOiB1biBzb2xvIHNpdGlvIGRlY2lkZSBjw7NtbyBzZSBlbmxhemEgdW4KICAgICAqIGV4cGVkaWVudGUsIHkgZXMgZWwgbWlzbW8gcXVlIHVzYW4gbG9zIGNvcnJlb3MgeSBsYXMgbm90aWZpY2FjaW9uZXMuCiAgICAgKi8KICAgIHRvU2VjdGlvbjogZnVuY3Rpb24gKHIpIHsKICAgICAgICAvKiBQb3IgZWwgbWVuw7osIHNpbiByZWNhcmdhciBlbCBwYW5lbCAodmVyIGBBY2NvdW50TmF2YCkuICovCiAgICAgICAgQWNjb3VudE5hdi5nbygociAmJiByLmVubGFjZSkgPyByLmVubGFjZSA6ICcvYWNjb3VudC9zdXBwb3J0Jyk7CiAgICB9Cn07Cg0KDQo8L3NjcmlwdD4NCg0KPC9tb2R1bGU+DQoNCg=="},"moduleProps":{"TAccountReturns":[],"TSupportTicketForm":[]},"intents":[{"intent":"open","component":{"name":"TAccountReturns","props":{"title":"Mis devoluciones"}},"options":{"target":""}}]}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ---- Boundary ----