{"id":91,"date":"2025-08-07T12:19:11","date_gmt":"2025-08-07T10:19:11","guid":{"rendered":"https:\/\/testwp.marcocammarata.it\/?page_id=91"},"modified":"2026-10-27T17:10:02","modified_gmt":"2026-10-27T16:10:02","slug":"services-navigator","status":"publish","type":"page","link":"https:\/\/we4healthcare.com\/it\/services-navigator\/","title":{"rendered":"Navigator"},"content":{"rendered":"<!-- We4 Services Navigator v3.0.1 \u00b7 blocco \"HTML personalizzato\". CSS e JS sono codificati (base64) perch\u00e9 WordPress non li modifichi.\nModuli Cobalt: incolla gli URL tra le virgolette di data-form-it=\"\" (italiano) e data-form-en=\"\" (inglese) nella riga che inizia con: div id=\"we4-navigator\" -->\n<link rel=\"stylesheet\" id=\"we4-navigator-css\" href=\"data:text\/css;base64,LyogV2U0IFNlcnZpY2VzIE5hdmlnYXRvciDigJQgc3RpbGkgZGVsIGNvbmZpZ3VyYXRvcmUgYUNoaXJhbCBjb24gbGEgcGFsZXR0ZSBXZTQgSGVhbHRoY2FyZSAqLwoKI3dlNC1uYXZpZ2F0b3IgewogICAgLS1hY2gtc3RpY2t5LXRvcDogMTIwcHg7CiAgICAtLXNpdGUtYmx1ZTogIzQwNmRiMTsKICAgIC0tc2l0ZS1ibHVlLWhvdmVyOiAjMzk1MTcxOwogICAgLS1zaXRlLWJsdWUtdGludDogcmdiYSg2NCwgMTA5LCAxNzcsIDAuMDcpOwogICAgLS1zaXRlLWJsdWUtYm9yZGVyOiByZ2JhKDY0LCAxMDksIDE3NywgMC4zOCk7CiAgICAtLXNpdGUtbmF2eTogIzE3MWExZjsKICAgIC0tc2l0ZS1uYXZ5LXRpbnQ6IHJnYmEoMjAsIDE3LCAzMSwgMC4wNSk7CiAgICAtLXNpdGUtbmF2eS1ib3JkZXI6IHJnYmEoMjAsIDE3LCAzMSwgMC4xOCk7CiAgICAtLXNpdGUtdGV4dDogIzE3MWExZjsKICAgIC0tc2l0ZS10ZXh0LW11dGVkOiAjMzk1MTcxOwogICAgLS1zaXRlLXRleHQtZmFpbnQ6ICM4MDgwODA7CiAgICAtLXNpdGUtYmc6ICNmZmZmZmY7CiAgICAtLXNpdGUtaGVyby1iZzogI0UyRUFGNDsgICAgICAgICAgCiAgICAtLXNpdGUtc3VyZmFjZTogI0ZGRkZGRjsKICAgIC0tc2l0ZS1ib3JkZXI6ICNkYWRlZTM7CiAgICAtLXNpdGUtYm9yZGVyLXN0cm9uZzogI0NCRDVFMTsKICAgIC0tc2l0ZS1kYW5nZXI6ICNEOTNGM0Y7CiAgICAtLXNpdGUtZGFuZ2VyLXRpbnQ6IHJnYmEoMjE3LCA2MywgNjMsIDAuMTApOwogICAgLS1zaXRlLW1pbnQ6ICMzZGIzYTQ7CiAgICAtLWFjaC1taW50LXRpbnQ6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjA4KTsKICAgIC0tYWNoLW1pbnQtYm9yZGVyOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4yNSk7CiAgICAtLWFjaC10ZWFsLXRleHQ6ICMwMDdlYTc7CiAgICAtLXNpdGUtcmFkaXVzLXNtOiA1cHg7CiAgICAtLXNpdGUtcmFkaXVzOiA1cHg7CiAgICAtLXNpdGUtcmFkaXVzLWNhcmQ6IDVweDsKICAgIC0tc2l0ZS1yYWRpdXMtcGlsbDogNXB4OwogICAgLS1zaXRlLXNoYWRvdy1zbTogbm9uZTsKICAgIC0tc2l0ZS1zaGFkb3ctb3ZlcmxheTogMCAxMnB4IDMycHggcmdiYSgyMCwgMTcsIDMxLCAwLjE2KTsKICAgIC0tc2l0ZS1mb2N1cy1yaW5nOiAwIDAgMCAzcHggcmdiYSg2NCwgMTA5LCAxNzcsIDAuMzUpOwogICAgLS1mb250LW1haW46IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtZmFtaWx5LS1wb3BwaW5zLCBQb3BwaW5zLCBzYW5zLXNlcmlmKTsKICAgIC0tZm9udC1oZWFkaW5nOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LWZhbWlseS0tYXJ0ZWdyYS1zYW5zLCAnQXJ0ZWdyYSBTYW5zJyksIHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtZmFtaWx5LS1wb3BwaW5zLCBQb3BwaW5zKSwgc2Fucy1zZXJpZjsKICAgIC0tc3BhY2UtNDogNHB4OwogICAgLS1zcGFjZS04OiA4cHg7CiAgICAtLXNwYWNlLTEyOiAxMnB4OwogICAgLS1zcGFjZS0xNjogMTZweDsKICAgIC0tc3BhY2UtMjA6IDIwcHg7CiAgICAtLXNwYWNlLTI0OiAyNHB4OwogICAgLS1zcGFjZS0zMjogMzJweDsKICAgIC0tc3BhY2UtNDA6IDQwcHg7CiAgICAtLXNwYWNlLTQ4OiA0OHB4Owp9CgoKI3dlNC1uYXZpZ2F0b3IgKiwKI3dlNC1uYXZpZ2F0b3IgKjo6YmVmb3JlLAojd2U0LW5hdmlnYXRvciAqOjphZnRlciB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKfQojd2U0LW5hdmlnYXRvciBbaGlkZGVuXSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KI3dlNC1uYXZpZ2F0b3IgYnV0dG9uLAojd2U0LW5hdmlnYXRvciBpbnB1dCwKI3dlNC1uYXZpZ2F0b3IgdGV4dGFyZWEgewogICAgZm9udDogaW5oZXJpdDsKICAgIGNvbG9yOiBpbmhlcml0Owp9CiN3ZTQtbmF2aWdhdG9yIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgYm9yZGVyOiAwOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKfQojd2U0LW5hdmlnYXRvciBoMSwKI3dlNC1uYXZpZ2F0b3IgaDIsCiN3ZTQtbmF2aWdhdG9yIGgzLAojd2U0LW5hdmlnYXRvciBwLAojd2U0LW5hdmlnYXRvciBsYWJlbCB7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWljbyB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTsKICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjsKICAgIC13ZWJraXQtbWFzazogdmFyKC0tYWNoLWljbykgbm8tcmVwZWF0IGNlbnRlciAvIGNvbnRhaW47CiAgICBtYXNrOiB2YXIoLS1hY2gtaWNvKSBuby1yZXBlYXQgY2VudGVyIC8gY29udGFpbjsKICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDsKICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pY28tLWFycm93LWxlZnQgeyB3aWR0aDogMC44NzVlbTsgLS1hY2gtaWNvOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNDQ4IDUxMiclM0UlM0NwYXRoIGQ9J005LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMiAyODggNDE2IDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzA2LjcgMEwyMTQuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHonLyUzRSUzQy9zdmclM0UiKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWljby0tYXJyb3ctcmlnaHQgeyB3aWR0aDogMC44NzVlbTsgLS1hY2gtaWNvOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNDQ4IDUxMiclM0UlM0NwYXRoIGQ9J000MzguNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjggMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMDYuNyAwTDIzMy40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6Jy8lM0UlM0Mvc3ZnJTNFIik7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pY28tLWNoZWNrLWNpcmNsZSB7IHdpZHRoOiAxZW07IC0tYWNoLWljbzogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDUxMiA1MTInJTNFJTNDcGF0aCBkPSdNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM2OSAyMDlMMjQxIDMzN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMMzM1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6Jy8lM0UlM0Mvc3ZnJTNFIik7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pY28tLWNoZWNrIHsgd2lkdGg6IDAuODc1ZW07IC0tYWNoLWljbzogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQ0OCA1MTInJTNFJTNDcGF0aCBkPSdNNDM4LjYgMTA1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTI1NiAyNTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xMjgtMTI4Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDE2MCAzMzguNyAzOTMuNCAxMDUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHonLyUzRSUzQy9zdmclM0UiKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWljby0tY2hldnJvbi1kb3duIHsgd2lkdGg6IDFlbTsgLS1hY2gtaWNvOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNTEyIDUxMiclM0UlM0NwYXRoIGQ9J00yMzMuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxOTItMTkyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI1NiAzMzguNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyeicvJTNFJTNDL3N2ZyUzRSIpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaWNvLS1jaGV2cm9uLXVwIHsgd2lkdGg6IDFlbTsgLS1hY2gtaWNvOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNTEyIDUxMiclM0UlM0NwYXRoIGQ9J00yMzMuNCAxMDUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxOTIgMTkyYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDI1NiAxNzMuMyA4Ni42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxOTItMTkyeicvJTNFJTNDL3N2ZyUzRSIpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaWNvLS1leGNsYW1hdGlvbi1jaXJjbGUgeyB3aWR0aDogMWVtOyAtLWFjaC1pY286IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyUzRSUzQ3BhdGggZD0nTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0wLTM4NGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYyNjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6Jy8lM0UlM0Mvc3ZnJTNFIik7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pY28tLWluZm8tY2lyY2xlIHsgd2lkdGg6IDFlbTsgLS1hY2gtaWNvOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNTEyIDUxMiclM0UlM0NwYXRoIGQ9J00yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjE2IDMzNmgyNFYyNzJIMjE2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0djg4aDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjE2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em00MC0yMDhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eicvJTNFJTNDL3N2ZyUzRSIpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaWNvLS1saXN0LWNoZWNrIHsgd2lkdGg6IDFlbTsgLS1hY2gtaWNvOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNTEyIDUxMiclM0UlM0NwYXRoIGQ9J00xNTIuMSAzOC4yYzkuOSA4LjkgMTAuNyAyNCAxLjggMzMuOWwtNzIgODBjLTQuNCA0LjktMTAuNiA3LjgtMTcuMiA3LjlzLTEyLjktMi40LTE3LjYtN0w3IDExM0MtMi4zIDEwMy42LTIuMyA4OC40IDcgNzlzMjQuNi05LjQgMzMuOSAwbDIyLjEgMjIuMSA1NS4xLTYxLjJjOC45LTkuOSAyNC0xMC43IDMzLjktMS44em0wIDE2MGM5LjkgOC45IDEwLjcgMjQgMS44IDMzLjlsLTcyIDgwYy00LjQgNC45LTEwLjYgNy44LTE3LjIgNy45cy0xMi45LTIuNC0xNy42LTdMNyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMi4xIDIyLjEgNTUuMS02MS4yYzguOS05LjkgMjQtMTAuNyAzMy45LTEuOHpNMjI0IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0wIDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTYwIDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDggMzY4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnonLyUzRSUzQy9zdmclM0UiKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWljby0tbWludXMgeyB3aWR0aDogMC44NzVlbTsgLS1hY2gtaWNvOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNDQ4IDUxMiclM0UlM0NwYXRoIGQ9J000MzIgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDQ4IDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnonLyUzRSUzQy9zdmclM0UiKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWljby0tcGx1cyB7IHdpZHRoOiAwLjg3NWVtOyAtLWFjaC1pY286IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0NDggNTEyJyUzRSUzQ3BhdGggZD0nTTI1NiA4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyMjRINDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTkyVjQzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OEg0MDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjU2VjgweicvJTNFJTNDL3N2ZyUzRSIpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaWNvLS1zZWFyY2ggeyB3aWR0aDogMWVtOyAtLWFjaC1pY286IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyUzRSUzQ3BhdGggZD0nTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIwOCAzNTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4eicvJTNFJTNDL3N2ZyUzRSIpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaWNvLS10aW1lcyB7IHdpZHRoOiAwLjc1ZW07IC0tYWNoLWljbzogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDM4NCA1MTInJTNFJTNDcGF0aCBkPSdNMzQyLjYgMTUwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTkyIDIxMC43IDg2LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDE0Ni43IDI1NiA0MS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5MiAzMDEuMyAyOTcuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDIzNy4zIDI1NiAzNDIuNiAxNTAuNnonLyUzRSUzQy9zdmclM0UiKTsgfQojd2U0LW5hdmlnYXRvciA6Zm9jdXMtdmlzaWJsZSB7CiAgICBvdXRsaW5lOiBub25lOwogICAgYm94LXNoYWRvdzogdmFyKC0tc2l0ZS1mb2N1cy1yaW5nKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNyLW9ubHkgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDFweDsKICAgIGhlaWdodDogMXB4OwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogLTFweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGJvcmRlcjogMDsKfQojd2U0LW5hdmlnYXRvciB7CiAgICB3aWR0aDogdmFyKC0tYWNoLXZ3LCAxMDB2dyk7CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICBtYXJnaW4taW5saW5lOiBjYWxjKDUwJSAtIHZhcigtLWFjaC12dywgMTAwdncpIC8gMik7CiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tYWluKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNpdGUtYmcpOwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dCk7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICBvdmVyZmxvdy14OiBjbGlwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1leHBsb3JlLWJhbm5lciwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtY2FyZCB7CiAgICBhcHBlYXJhbmNlOiBub25lOwogICAgZm9udDogaW5oZXJpdDsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIHdpZHRoOiAxMDAlOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcmFkaW8tZG90IGksCiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWNoZWNrIGkgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7Cn0KI3dlNC1uYXZpZ2F0b3IgLmlzLXNlbGVjdGVkID4gLmFjaC1yYWRpby1kb3QgaSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtY2FyZC5pcy1jaGVja2VkIC5hY2gtc3J2LWNoZWNrIGkgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogbm9uZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXBwZXItd3JhcCB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00OCkgMCAxNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNTZweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXBwZXIgewogICAgbWF4LXdpZHRoOiA5MDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTI0KTsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwcGVyLXRyYWNrIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMThweDsKICAgIGxlZnQ6IGNhbGModmFyKC0tc3BhY2UtMjQpICsgKDEwMCUgLSAyICogdmFyKC0tc3BhY2UtMjQpKSAvIDgpOwogICAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UtMjQpICsgKDEwMCUgLSAyICogdmFyKC0tc3BhY2UtMjQpKSAvIDgpOwogICAgaGVpZ2h0OiAycHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJvcmRlcik7CiAgICB6LWluZGV4OiAxOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcHBlci1wcm9ncmVzcyB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgd2lkdGg6IDAlOwogICAgdHJhbnNpdGlvbjogd2lkdGggMC4zNXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0biB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAyOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZDogbm9uZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGdhcDogOHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cyk7CiAgICBwYWRkaW5nOiAwIDRweCAycHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bjpkaXNhYmxlZCB7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC1udW0gewogICAgd2lkdGg6IDM2cHg7CiAgICBoZWlnaHQ6IDM2cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLXN1cmZhY2UpOwogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXItc3Ryb25nKTsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtdGV4dCB7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2U7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bjpub3QoOmRpc2FibGVkKTpub3QoLmlzLWFjdGl2ZSk6aG92ZXIgLmFjaC1zdGVwLW51bSB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtYnRuOmRpc2FibGVkIC5hY2gtc3RlcC10ZXh0IHsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC1idG4uaXMtYWN0aXZlIC5hY2gtc3RlcC1udW0gewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGNvbG9yOiAjRkZGRkZGOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC1idG4uaXMtYWN0aXZlIC5hY2gtc3RlcC10ZXh0IHsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtYnRuLmlzLWRvbmUgLmFjaC1zdGVwLW51bSB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtYnRuLmlzLWRvbmUgLmFjaC1zdGVwLXRleHQgewogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1jb250ZW50LWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgcGFkZGluZzogMCAzMnB4IDY0cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC12aWV3LXN0ZXAgewogICAgZGlzcGxheTogbm9uZTsKICAgIGFuaW1hdGlvbjogZmFkZUluIDAuMjVzIGVhc2UgZm9yd2FyZHM7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC12aWV3LXN0ZXAuaXMtdmlzaWJsZSB7CiAgICBkaXNwbGF5OiBibG9jazsKfQpAa2V5ZnJhbWVzIGZhZGVJbiB7CiAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDZweCk7IH0KICAgIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRybyB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWhlcm8tYmcpOwogICAgcGFkZGluZzogNTZweCAzMnB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRyb19faW5uZXIgewogICAgbWF4LXdpZHRoOiA3MjBweDsKICAgIG1hcmdpbjogMCBhdXRvOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm9fX2xhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMjQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm9fX3RpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzhweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS0xNik7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRyb19fdGl0bGUgc3Ryb25nIHsKICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm9fX2xlYWQgewogICAgZm9udC1zaXplOiAxNS41cHg7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgbWFyZ2luOiAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VjdGlvbi1oZWFkZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgIHBhZGRpbmc6IDQwcHggMzJweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtaGVyby1iZyk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1jYXJkKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXRhZy1sYWJlbCB7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBkaXNwbGF5OiBibG9jazsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWhlYWRlci1iYWNrIHsKICAgIG1hcmdpbi10b3A6IDE2cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMiB7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtOwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWgxIHsKICAgIGZvbnQtc2l6ZTogMzhweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWgyIHsKICAgIGZvbnQtc2l6ZTogMzRweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWgxIHN0cm9uZywKI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMiBzdHJvbmcgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWgxOmZvY3VzLAojd2U0LW5hdmlnYXRvciAuYWNoLWgyOmZvY3VzIHsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMSBzcGFuLAojd2U0LW5hdmlnYXRvciAuYWNoLWgyIHNwYW4gewogICAgY29sb3I6IGluaGVyaXQ7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1sZWFkLXRleHQgewogICAgZm9udC1zaXplOiAxNS41cHg7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIG1heC13aWR0aDogNzIwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIGxpbmUtaGVpZ2h0OiAxLjc7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1sZWFkLXRleHQgc3Ryb25nIHsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWJ0biB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogOHB4OwogICAgcGFkZGluZzogMTNweCAyOHB4OwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBsaW5lLWhlaWdodDogMS4yOwogICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtYnRuLS1wcmltYXJ5IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBjb2xvcjogI0ZGRkZGRjsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXNpdGUtYmx1ZSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1idG4tLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2l0ZS1ibHVlLWhvdmVyKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2l0ZS1ibHVlLWhvdmVyKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWJ0bi0tc2Vjb25kYXJ5IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXNpdGUtYmx1ZSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1idG4tLXNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgY29sb3I6ICNGRkZGRkY7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1idG4tLWdob3N0IHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWJ0bi0tZ2hvc3Q6aG92ZXI6bm90KDpkaXNhYmxlZCkgewogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJsdWUtdGludCk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1idG4tLXNtIHsKICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWJ0bjpkaXNhYmxlZCB7CiAgICBvcGFjaXR5OiAwLjQ1OwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saW5rLWJ0biB7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgYm9yZGVyOiBub25lOwogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA2cHg7CiAgICBwYWRkaW5nOiA0cHggMnB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbGluay1idG46aG92ZXIgewogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZS1ob3Zlcik7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWFjdGlvbmJhciB7CiAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgYm90dG9tOiAxNnB4OwogICAgei1pbmRleDogMjA7CiAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1zdXJmYWNlKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLWNhcmQpOwogICAgYm94LXNoYWRvdzogMCAtMXB4IDAgdmFyKC0tc2l0ZS1ib3JkZXIpLCAwIDRweCAxNnB4IHJnYmEoMjAsIDE3LCAzMSwgMC4wNik7CiAgICBwYWRkaW5nOiAxNnB4IDE4cHggMTZweCAyNHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDE2cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1hY3Rpb25iYXJfX2luZm8gewogICAgZmxleDogMTsKICAgIG1pbi13aWR0aDogMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgbGluZS1oZWlnaHQ6IDEuNDU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1hY3Rpb25iYXJfX2luZm8gc3Ryb25nIHsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWFjdGlvbmJhcl9faW5mbyBpIHsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgbWFyZ2luLXJpZ2h0OiA2cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1hY3Rpb25iYXJfX2Fycm93IHsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwogICAgbWFyZ2luOiAwIDZweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWFjdGlvbmJhcl9fYWN0aW9ucyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiAxMHB4OwogICAgZmxleC1zaHJpbms6IDA7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1hY3Rpb25iYXIgLmFjaC1idG4gewogICAgcGFkZGluZzogMTFweCAyMnB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTsKICAgIGdhcDogMjhweDsKICAgIG1hcmdpbi1ib3R0b206IDQwcHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtc3VyZmFjZSk7CiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLWNhcmQpOwogICAgcGFkZGluZzogMjRweCAyMnB4IDIwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4yNXMgZWFzZSwgdHJhbnNmb3JtIDAuMjVzIGVhc2UsIGJveC1zaGFkb3cgMC4yNXMgZWFzZSwgYmFja2dyb3VuZCAwLjI1cyBlYXNlOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmQuaXMtc2VsZWN0ZWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1ibHVlLXRpbnQpOwogICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHZhcigtLXNpdGUtYmx1ZSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1yYWRpby1kb3QgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxNnB4OwogICAgcmlnaHQ6IDE2cHg7CiAgICB3aWR0aDogMjJweDsKICAgIGhlaWdodDogMjJweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyLXN0cm9uZyk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLXN1cmZhY2UpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGNvbG9yOiAjRkZGRkZGOwogICAgZm9udC1zaXplOiAxMHB4OwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKfQojd2U0LW5hdmlnYXRvciAuaXMtc2VsZWN0ZWQgPiAuYWNoLXJhZGlvLWRvdCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9faWNvbiB7CiAgICB3aWR0aDogNDhweDsKICAgIGhlaWdodDogNDhweDsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLW5hdnktdGludCk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAxOHB4OwogICAgZmxleC1zaHJpbms6IDA7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmRfX2ljb24gc3ZnIHsKICAgIHdpZHRoOiAyNHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgZGlzcGxheTogYmxvY2s7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkOmhvdmVyIC5hY2gtbWFjcm8tY2FyZF9faWNvbiB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDY0LCAxMDksIDE3NywgMC4xMik7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmQuaXMtc2VsZWN0ZWQgLmFjaC1tYWNyby1jYXJkX19pY29uIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBjb2xvcjogI0ZGRkZGRjsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmRfX3RpdGxlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxN3B4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgIG1hcmdpbi1ib3R0b206IDJweDsKICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkX19zdWJ0aXRsZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjM1OwogICAgbWFyZ2luLWJvdHRvbTogMTRweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmRfX2Rlc2MgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDEyLjVweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIC13ZWJraXQtbGluZS1jbGFtcDogMzsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9faW5jbHVkZXMgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGdhcDogNnB4OwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWluY2x1ZGUtY2hpcCB7CiAgICBmb250LXNpemU6IDEwLjVweDsKICAgIGJhY2tncm91bmQ6ICNGMUY1Rjk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIHBhZGRpbmc6IDNweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1zbSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaXRlLWJvcmRlcik7CiAgICBmb250LXdlaWdodDogNTAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9fdGFnIHsKICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4OwogICAgcGFkZGluZy10b3A6IDE0cHg7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgZm9udC1zaXplOiAxMi41cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkX190YWcgaSB7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmQuaXMtc2VsZWN0ZWQgLmFjaC1tYWNyby1jYXJkX190YWcgewogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1vciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTZweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtOwogICAgbWFyZ2luOiAxNnB4IDAgMjhweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW9yOjpiZWZvcmUsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtb3I6OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZmxleDogMTsKICAgIGhlaWdodDogMXB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1ib3JkZXItc3Ryb25nKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWV4cGxvcmUtYmFubmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtc3VyZmFjZSk7CiAgICBib3JkZXI6IDEuNXB4IGRhc2hlZCB2YXIoLS1zaXRlLWJvcmRlci1zdHJvbmcpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l0ZS1yYWRpdXMtY2FyZCk7CiAgICBwYWRkaW5nOiAyNnB4IDcycHggMjZweCAyOHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDE4cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWV4cGxvcmUtYmFubmVyOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtYmx1ZS10aW50KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWV4cGxvcmUtYmFubmVyLmlzLXNlbGVjdGVkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJsdWUtdGludCk7CiAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggdmFyKC0tc2l0ZS1ibHVlKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWV4cGxvcmUtYmFubmVyIC5hY2gtcmFkaW8tZG90IHsKICAgIHRvcDogNTAlOwogICAgcmlnaHQ6IDI0cHg7CiAgICBtYXJnaW4tdG9wOiAtMTFweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWV4cGxvcmUtdGl0bGUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1leHBsb3JlLWRlc2MgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXMyLWxheW91dCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSAzMjBweDsKICAgIGdhcDogNDBweDsKICAgIGFsaWduLWl0ZW1zOiBzdGFydDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRyb2xzLWJhciB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBnYXA6IDEycHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC10YWItZmlsdGVycyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgZ2FwOiA4cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC10YWItYnRuIHsKICAgIHBhZGRpbmc6IDdweCAxMnB4IDdweCAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l0ZS1yYWRpdXMtcGlsbCk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1zdXJmYWNlKTsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtdGFiLWJ0bjpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXRhYi1idG4uaXMtYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtbmF2eSk7CiAgICBjb2xvcjogI0ZGRkZGRjsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXRhYi1jb3VudCB7CiAgICBmb250LXNpemU6IDExcHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1iZyk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBwYWRkaW5nOiAxcHggOHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtdGFiLWJ0bi5pcy1hY3RpdmUgLmFjaC10YWItY291bnQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTsKICAgIGNvbG9yOiAjRkZGRkZGOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udHJvbHMtcmlnaHQgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBnYXA6IDE4cHg7CiAgICB3aWR0aDogMTAwJTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRyb2xzLXJpZ2h0IC5hY2gtc2VhcmNoLXdyYXAgewogICAgZmxleDogMTsKICAgIG1pbi13aWR0aDogMjIwcHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saW5rLWJ0bi0tbXV0ZWQgewogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWFyY2gtd3JhcCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWFyY2gtaW5wdXQgewogICAgcGFkZGluZzogOXB4IDM2cHggOXB4IDM4cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1waWxsKTsKICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgZm9udC1zaXplOiAxMy41cHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtc3VyZmFjZSk7CiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tYWluKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtc3VyZmFjZSkgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDUxMiA1MTInIGZpbGw9JyUyMzcwN0I4RSclM0UlM0NwYXRoIGQ9J000MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4ek0yMDggMzUyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHonLyUzRSUzQy9zdmclM0UiKSBuby1yZXBlYXQgMTRweCBjZW50ZXIgLyAxNHB4IDE0cHg7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0KTsKICAgIG91dGxpbmU6IG5vbmU7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgYXBwZWFyYW5jZTogbm9uZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNlYXJjaC1pbnB1dDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBub25lOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VhcmNoLWlucHV0OmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDY0LCAxMDksIDE3NywgMC4xNSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWFyY2gtY2xlYXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDhweDsKICAgIHRvcDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgd2lkdGg6IDI0cHg7CiAgICBoZWlnaHQ6IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJnKTsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNlYXJjaC1jbGVhcjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJvcmRlcik7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWhpbnQgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLXN1cmZhY2UpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l0ZS1yYWRpdXMpOwogICAgcGFkZGluZzogMTZweCAxOHB4IDE2cHggMjJweDsKICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICBmb250LXNpemU6IDEzLjVweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaGludCA+IGkgewogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBmb250LXNpemU6IDE2cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1oaW50X190ZXh0IHsKICAgIGZsZXg6IDE7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1oaW50X190ZXh0IHN0cm9uZyB7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cCB7CiAgICBtYXJnaW4tYm90dG9tOiAyMnB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwX190b2dnbGUgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgZ2FwOiAxMnB4OwogICAgYmFja2dyb3VuZDogbm9uZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgZm9udDogaW5oZXJpdDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cF9fdG9nZ2xlID4gaSB7CiAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXAuaXMtY29sbGFwc2VkIC5hY2gtc3J2LWdyb3VwX190b2dnbGUgPiBpIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXAuaXMtY29sbGFwc2VkIC5hY2gtc3J2LWdyb3VwX19oZWFkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXBfX2hlYWQgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGdhcDogMTJweDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgcGFkZGluZy1ib3R0b206IDhweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zaXRlLWJvcmRlcik7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXBfX3RpdGxlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxN3B4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgbGluZS1oZWlnaHQ6IDEuMzsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cF9fZGVzYyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTIuNXB4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXBfX21ldGEgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDA7CiAgICBmb250LXNpemU6IDEyLjVweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cF9fbWV0YSBzdHJvbmcgewogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjAwcHgsIDFmcikpOwogICAgZ2FwOiA4cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLXN1cmZhY2UpOwogICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1zaXRlLWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cyk7CiAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgICBtaW4taGVpZ2h0OiA1OHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGZvbnQ6IGluaGVyaXQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBiYWNrZ3JvdW5kIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjJzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKICAgIHVzZXItc2VsZWN0OiBub25lOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWNhcmQ6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWNhcmQuaXMtcmVjb21tZW5kZWQgewogICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZS1ib3JkZXIpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWNhcmQuaXMtY2hlY2tlZCB7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1ibHVlLXRpbnQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWNoZWNrIHsKICAgIHdpZHRoOiAyMnB4OwogICAgaGVpZ2h0OiAyMnB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXItc3Ryb25nKTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IDExcHg7CiAgICBjb2xvcjogI0ZGRkZGRjsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1zdXJmYWNlKTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtY2FyZC5pcy1jaGVja2VkIC5hY2gtc3J2LWNoZWNrIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtYm9keSB7CiAgICBmbGV4OiAxOwogICAgbWluLXdpZHRoOiAwOwogICAgZGlzcGxheTogYmxvY2s7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA4cHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBtaW4taGVpZ2h0OiAxOHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LW5vcm0gewogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcmVjLWJhZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi10b3A6IDRweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICBmb250LXNpemU6IDEwLjVweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoNjQsIDEwOSwgMTc3LCAwLjA4KTsKICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LXRpdGxlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgbGluZS1oZWlnaHQ6IDEuMzU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtdGVybSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi10b3A6IDJweDsKICAgIGZvbnQtc2l6ZTogMTEuNXB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzU7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LWZhaW50KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1jYXJkLmlzLWNoZWNrZWQgLmFjaC1zcnYtdGVybSB7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1kZXNjIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMi41cHg7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjQ1Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LXBmbXMgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDRweCAxMHB4OwogICAgbWFyZ2luLXRvcDogMTRweDsKICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zaXRlLWJvcmRlcik7CiAgICBmb250LXNpemU6IDExLjVweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LXBmbXNfX2xibCB7CiAgICBmb250LXNpemU6IDEwLjVweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LWZhaW50KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXBmbS1taW5pIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogNXB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcGZtLWNvbG9yKSA3NSUsICMwMDAwMDApOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGZtLW1pbmkgaSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wZm0tY29sb3IpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGZtLW1pbmkgaSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1kb3QgewogICAgd2lkdGg6IDhweDsKICAgIGhlaWdodDogOHB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZmxleC1zaHJpbms6IDA7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1lbXB0eSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiA0MHB4IDI0cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLXN1cmZhY2UpOwogICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXNpdGUtYm9yZGVyLXN0cm9uZyk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1jYXJkKTsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtZW1wdHkgPiBpIHsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWVtcHR5IHAgewogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWxpdmUgewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIHRvcDogdmFyKC0tYWNoLXN0aWNreS10b3ApOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1zdXJmYWNlKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLWNhcmQpOwogICAgcGFkZGluZzogMjRweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZ2FwOiAyMHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbGl2ZV9fdGl0bGUgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgIG1hcmdpbi10b3A6IDJweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWxpdmVfX3N0YXRzIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgZ2FwOiA4cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlX19zdGF0IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtYmcpOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBhZGRpbmc6IDEwcHggNnB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbGl2ZV9fc3RhdCBiIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAyMHB4OwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbGluZS1oZWlnaHQ6IDEuMTU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlX19zdGF0IHNwYW4gewogICAgZm9udC1zaXplOiAxMXB4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlX19saXN0IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZ2FwOiA4cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlX19wZm0gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcGZtLWNvbG9yKSAzMCUsICNGRkZGRkYpOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wZm0tY29sb3IpIDYlLCAjRkZGRkZGKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWxpdmVfX3BmbS5pcy1uZXcgewogICAgYW5pbWF0aW9uOiBmYWRlSW4gMC4yNXMgZWFzZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWxpdmVfX3BmbSAuYWNoLWRvdCB7CiAgICB3aWR0aDogMTBweDsKICAgIGhlaWdodDogMTBweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWxpdmVfX25hbWUgewogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgZmxleDogMTsKICAgIG1pbi13aWR0aDogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlX19yb2xlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wZm0tY29sb3IpIDc1JSwgIzAwMDAwMCk7CiAgICBmb250LXdlaWdodDogNDAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbGl2ZV9fZW1wdHkgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAxOHB4IDEycHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJnKTsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc2l0ZS1ib3JkZXItc3Ryb25nKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1pbmktdGllciB7CiAgICBmb250LXNpemU6IDEwcHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgcGFkZGluZzogMnB4IDhweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLXBpbGwpOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1pbmktdGllci0tY29yZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLW5hdnktdGludCk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpdGUtbmF2eS1ib3JkZXIpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWluaS10aWVyLS1vcHQgewogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1iZyk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyLXN0cm9uZyk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlX19tb3JlIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgcGFkZGluZzogNnB4IDJweCAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWluaS10aWVyLS1zdXBwIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNjgsIDE4NCwgMTczLCAwLjE1KTsKICAgIGNvbG9yOiB2YXIoLS1hY2gtdGVhbC10ZXh0KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNjgsIDE4NCwgMTczLCAwLjQwKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXJlc3VsdHMtbGF5b3V0IHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjg1ZnIpIG1pbm1heCgwLCAxLjE1ZnIpOwogICAgZ2FwOiA0MHB4OwogICAgYWxpZ24taXRlbXM6IHN0YXJ0Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VjLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTQwKSAwIHZhcigtLXNwYWNlLTE2KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNlYy10aXRsZTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tdG9wOiAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VjLXRpdGxlIHNtYWxsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLXRvcDogMnB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtb3B0aW9uYWwgewogICAgbWFyZ2luLXRvcDogMjRweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW9wdGlvbmFsX190b2dnbGUgewogICAgd2lkdGg6IDEwMCU7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJvcmRlci1zdHlsZTogZGFzaGVkOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtb3B0aW9uYWxfX25vdGUgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7CiAgICBtYXJnaW46IDE2cHggMCAxMnB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm0tYWN0aW9uIHsKICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm1zLWxpc3QgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBnYXA6IHZhcigtLXNwYWNlLTI0KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLWNhcmQgewogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1zdXJmYWNlKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLWNhcmQpOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMjQpOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBnYXA6IHZhcigtLXNwYWNlLTgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2U7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS1jYXJkOmhvdmVyIHsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLXRvcCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGdhcDogdmFyKC0tc3BhY2UtMTYpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm0tbmFtZSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLXJvbGUgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcGZtLWNvbG9yKSA3NSUsICMwMDAwMDApOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm0tbmFycmF0aXZlIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgbGluZS1oZWlnaHQ6IDEuNTU7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS10cmlnZ2VyIHsKICAgIGZvbnQtc2l6ZTogMTIuNXB4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1zbSk7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIG1hcmdpbi10b3A6IDhweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLXRyaWdnZXIgc3VtbWFyeSB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA2cHg7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS10cmlnZ2VyIHN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIgeyBkaXNwbGF5OiBub25lOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm0tdHJpZ2dlciBzdW1tYXJ5OjphZnRlciB7CiAgICBjb250ZW50OiAiIjsKICAgIHdpZHRoOiAxMHB4OwogICAgaGVpZ2h0OiAxMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yOwogICAgLXdlYmtpdC1tYXNrOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNTEyIDUxMiclM0UlM0NwYXRoIGQ9J00yMzMuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxOTItMTkyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI1NiAzMzguNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyeicvJTNFJTNDL3N2ZyUzRSIpIG5vLXJlcGVhdCBjZW50ZXIgLyBjb250YWluOwogICAgbWFzazogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDUxMiA1MTInJTNFJTNDcGF0aCBkPSdNMjMzLjQgNDA2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTkyLTE5MmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyNTYgMzM4LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTkyIDE5MnonLyUzRSUzQy9zdmclM0UiKSBuby1yZXBlYXQgY2VudGVyIC8gY29udGFpbjsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS10cmlnZ2VyW29wZW5dIHN1bW1hcnk6OmFmdGVyIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS10cmlnZ2VyW29wZW5dIC5hY2gtdHJpZ2dlci1jaGlwcyB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm0tdHJpZ2dlciBzdHJvbmcgewogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICBmb250LXdlaWdodDogNjAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtdHJpZ2dlci1jaGlwcyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgZ2FwOiA4cHg7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtdHJpZ2dlci1jaGlwIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l0ZS1yYWRpdXMtc20pOwogICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXBmbS1jb2xvcikgMTIlLCAjRkZGRkZGKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wZm0tY29sb3IpIDQwJSwgI0ZGRkZGRik7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdW1tYXJ5LXBhbmVsIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtc3VyZmFjZSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaXRlLWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1jYXJkKTsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMyKTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZ2FwOiB2YXIoLS1zcGFjZS0zMik7CiAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgdG9wOiB2YXIoLS1hY2gtc3RpY2t5LXRvcCk7CiAgICBtYXJnaW4tdG9wOiBjYWxjKDIwcHggKiAxLjMgKyB2YXIoLS1zcGFjZS0yMCkpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGFuZWwtYmxvY2sgaDMgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMTYpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGFuZWwtYmxvY2tfX2Rlc2MgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgbWFyZ2luOiAtOHB4IDAgdmFyKC0tc3BhY2UtMTYpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtZmxvd3MgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBnYXA6IHZhcigtLXNwYWNlLTEyKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWZsb3cgewogICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXBmbS1jb2xvcikgNSUsICNGRkZGRkYpOwogICAgYm9yZGVyOiAxcHggc29saWQgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXBmbS1jb2xvcikgMjUlLCAjRkZGRkZGKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzKTsKICAgIHBhZGRpbmc6IDE0cHggMTZweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWZsb3dfX3BhdGggewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1mbG93LXBpbGwgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA2cHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wZm0tY29sb3IpIDc1JSwgIzAwMDAwMCk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLXN1cmZhY2UpOwogICAgYm9yZGVyOiAxcHggc29saWQgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXBmbS1jb2xvcikgNDUlLCAjRkZGRkZGKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLXBpbGwpOwogICAgcGFkZGluZzogM3B4IDEwcHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1mbG93LXBpbGwgaSB7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wZm0tY29sb3IpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtZmxvd19fYXJyb3cgewogICAgZm9udC1zaXplOiAxMXB4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1mYWludCk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1mbG93X19zY29wZSB7CiAgICBmb250LXNpemU6IDExLjVweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtZmxvd19fdGl0bGUgewogICAgZm9udC1zaXplOiAxMy41cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICBtYXJnaW4tYm90dG9tOiA0cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1mbG93X190ZXh0IHsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWZsb3dfX3RleHQgc3Ryb25nIHsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWZsb3ctZW1wdHkgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1mbG93LWVuZCB7CiAgICBtYXJnaW46IDEycHggMCAwOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtZmxvdy1lbmQgc3Ryb25nLAojd2U0LW5hdmlnYXRvciAuYWNoLWZsb3ctZW1wdHkgc3Ryb25nIHsgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1jb21wLWJhZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTEuNXB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtbmF2eS10aW50KTsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1zbSk7CiAgICBtYXJnaW46IDNweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNpdGUtbmF2eS1ib3JkZXIpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtY29tcC1iYWRnZSBpIHsKICAgIGZvbnQtc2l6ZTogMTBweDsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgb3BhY2l0eTogMC44NTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXA0LWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDEuM2ZyOwogICAgZ2FwOiA0MHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3BlYy1zaGVldCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1jb250YWN0LWZvcm0tY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLXN1cmZhY2UpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l0ZS1yYWRpdXMtY2FyZCk7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00MCk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcGVjLXNoZWV0X19oZWFkIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgZ2FwOiAxMnB4OwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMjQpOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyKTsKICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS0xMik7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcGVjLXNoZWV0IGgzIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtcm93IHsKICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTI0KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtbGFiZWwgewogICAgZm9udC1zaXplOiAxMXB4OwogICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1mYWludCk7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbWFyZ2luLWJvdHRvbTogNHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3BlYy12YWwgewogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3BlYy1jaGlwcyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgZ2FwOiA4cHg7CiAgICBtYXJnaW4tdG9wOiA4cHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1jaGlwLXRvZ2dsZSB7CiAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1zaXRlLWJsdWUtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLXNtKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjM1OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGZvbnQ6IGluaGVyaXQ7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtY2hpcC10b2dnbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3BlYy1jaGlwIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM1OwogICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cy1zbSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJnKTsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcGVjLWNoaXAtLXBmbSB7CiAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcGZtLWNvbG9yKSAxMCUsICNGRkZGRkYpOwogICAgYm9yZGVyLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcGZtLWNvbG9yKSA0MCUsICNGRkZGRkYpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtY2hpcC0tY29tcCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2gtbWludC10aW50KTsKICAgIGNvbG9yOiAjMTQ2QjZCOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2gtbWludC1ib3JkZXIpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtYWN0aW9ucyB7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yNCk7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgZ2FwOiB2YXIoLS1zcGFjZS04KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRhY3QtZm9ybS1jYXJkIGgzIHsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWNvYmFsdC1mcmFtZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgbWluLWhlaWdodDogNzYwcHg7CiAgICBib3JkZXI6IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgb3ZlcmZsb3ctYW5jaG9yOiBub25lOwogICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMTYpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtdG9hc3QtbXNnIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMjRweDsKICAgIHdpZHRoOiBmaXQtY29udGVudDsKICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDMycHgpOwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgY29sb3I6ICNGRkZGRkY7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpdGUtcmFkaXVzLXBpbGwpOwogICAgYm94LXNoYWRvdzogdmFyKC0tc2l0ZS1zaGFkb3ctb3ZlcmxheSk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZGlzcGxheTogbm9uZTsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIHotaW5kZXg6IDEwMDAwOwogICAgYW5pbWF0aW9uOiBzbGlkZUluVG9hc3QgMC4yNXMgZWFzZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXRvYXN0LW1zZy5pcy12aXNpYmxlIHsKICAgIGRpc3BsYXk6IGZsZXg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC10b2FzdC1tc2cgaSB7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KQGtleWZyYW1lcyBzbGlkZUluVG9hc3QgewogICAgZnJvbSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsgb3BhY2l0eTogMDsgfQogICAgdG8geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IG9wYWNpdHk6IDE7IH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHsKICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtczItbGF5b3V0IHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtbGl2ZSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcmVzdWx0cy1sYXlvdXQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXN1bW1hcnktcGFuZWwgewogICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm8gewogICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMyKSAxNnB4IHZhcigtLXNwYWNlLTI0KTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcDQtZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDcyMHB4KSB7CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRlbnQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwIDE2cHggNDBweDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcHBlci13cmFwIHsKICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zMikgMCAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI4cHg7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXBwZXIgewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcHBlci10cmFjayB7CiAgICAgICAgbGVmdDogY2FsYygxNnB4ICsgKDEwMCUgLSAzMnB4KSAvIDgpOwogICAgICAgIHJpZ2h0OiBjYWxjKDE2cHggKyAoMTAwJSAtIDMycHgpIC8gOCk7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bjpub3QoLmlzLWFjdGl2ZSkgLmFjaC1zdGVwLXRleHQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWgxIHsKICAgICAgICBmb250LXNpemU6IDI4cHg7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWgyIHsKICAgICAgICBmb250LXNpemU6IDI1cHg7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWxlYWQtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiAxNC41cHg7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWludHJvIHsKICAgICAgICBwYWRkaW5nOiA0MHB4IDE2cHg7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX190aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyOHB4OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWN0aW9uLWhlYWRlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4IDE2cHg7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1leHBsb3JlLWJhbm5lciB7CiAgICAgICAgcGFkZGluZzogMTZweCA1NnB4IDE2cHggMTZweDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udHJvbHMtYmFyLAojd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRyb2xzLXJpZ2h0IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWFyY2gtaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1oaW50IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXBfX2hlYWQgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm0tdG9wIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGdhcDogNnB4OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcGVjLXNoZWV0LAojd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRhY3QtZm9ybS1jYXJkIHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1hY3Rpb25iYXIgewogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGdhcDogMTBweDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtYWN0aW9uYmFyX19pbmZvIHsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlOwogICAgICAgIG9yZGVyOiAtMTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWFjdGlvbmJhcl9fYWN0aW9ucyB7CiAgICAgICAgZmxleDogMTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtYWN0aW9uYmFyX19hY3Rpb25zIC5hY2gtYnRuIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHBhZGRpbmc6IDExcHggMTRweDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtaGlkZS1zbSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KfQpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogICAgI3dlNC1uYXZpZ2F0b3IgKiwKI3dlNC1uYXZpZ2F0b3IgKjo6YmVmb3JlLAojd2U0LW5hdmlnYXRvciAqOjphZnRlciB7CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDsKICAgIH0KfQojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLW5hbWU6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIHdpZHRoOiAxMHB4OwogICAgaGVpZ2h0OiAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYmFja2dyb3VuZDogdmFyKC0tcGZtLWNvbG9yLCB2YXIoLS1zaXRlLWJsdWUpKTsKICAgIGZsZXgtc2hyaW5rOiAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcHJpbnQtcmVwb3J0IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIERlc2lnbiBXZTQgSGVhbHRoY2FyZTogc3Rlc3NpIGZvbnQsIGJvdHRvbmksIHJhZ2dpIGUgc3BhemlhdHVyZSBkZWwgc2l0bwogICAodGl0b2xpIEFydGVncmEgU2FucyA5MDAgwrcgdGVzdG8gUG9wcGlucyDCtyBib3R0b25pIDVweCDCtyBjYXJkIDVweCBzZW56YSBvbWJyYSkKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQG1lZGlhIHNjcmVlbiB7CiN3ZTQtbmF2aWdhdG9yIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1haW4pOwogICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsLCAxNi44cHgpOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX190aXRsZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMiwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWMtdGl0bGUsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtcGxhdGZvcm0tbmFtZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkX190aXRsZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXBfX3RpdGxlLAojd2U0LW5hdmlnYXRvciAuYWNoLWxpdmVfX3RpdGxlLAojd2U0LW5hdmlnYXRvciAuYWNoLXBhbmVsLWJsb2NrIGgzLAojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtc2hlZXQgaDMsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udGFjdC1mb3JtLWNhcmQgaDMsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtZXhwbG9yZS10aXRsZSB7CiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWgxIHN0cm9uZywgI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMiBzdHJvbmcsICN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm9fX3RpdGxlIHN0cm9uZyB7CiAgICBmb250LXdlaWdodDogOTAwOwogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7Cn0KCi8qIGludHJvOiBjb21lIGdsaSBoZXJvIGRlbCBzaXRvICovCiN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm8gewogICAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0teC1sYXJnZSwgNXJlbSkgdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tbWVkaXVtLCAycmVtKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX19pbm5lciB7IG1heC13aWR0aDogODIwcHg7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRyb19fdGl0bGUgewogICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLWxhcmdlLCA0NHB4KTsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRyb19fbGVhZCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1sZWFkLXRleHQgewogICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLWJhc2UsIDE4LjY0cHgpOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tc2Vjb25kYXJ5LCAjMzk1MTcxKTsKfQovKiBleWVicm93OiBQb3BwaW5zIDUwMCwgY29sb3JlIHByaW1hcmlvLCBzZW56YSBtYWl1c2NvbG8gKGNvbWUgIk91ciBFY29zeXN0ZW0iKSAqLwojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX19sYWJlbCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC10YWctbGFiZWwgewogICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbWFpbik7CiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwsIDE2LjhweCk7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7Cn0KCi8qIGNvbnRlbml0b3JlOiBsYXJnaGV6emEgIndpZGUiIGRlbCB0ZW1hIGUgcGFkZGluZyBnbG9iYWxlICovCiN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udGVudC1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiB2YXIoLS13cC0tc3R5bGUtLWdsb2JhbC0td2lkZS1zaXplLCAxMjYwcHgpOwogICAgcGFkZGluZzogMCB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS1tZWRpdW0sIDJyZW0pIHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLXgtbGFyZ2UsIDVyZW0pOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VjdGlvbi1oZWFkZXIgewogICAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tbWVkaXVtLCAycmVtKSB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS14LWxhcmdlLCA1cmVtKTsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS1sYXJnZSwgM3JlbSk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMSwgI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMiB7CiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtLCAyNi40cHgpOwogICAgbGluZS1oZWlnaHQ6IDEuMjsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNlYy10aXRsZSB7IGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1tZWRpdW0sIDI2LjRweCk7IH0KCi8qIGJvdHRvbmk6IHdwLWJsb2NrLWJ1dHRvbiBkZWwgdGVtYSAqLwojd2U0LW5hdmlnYXRvciAuYWNoLWJ0biB7CiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tYWluKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS14LXNtYWxsLCAxNS4ycHgpOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDsKICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgcGFkZGluZzogLjZlbSAxZW07CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBib3JkZXI6IDA7CiAgICB0cmFuc2l0aW9uOiBub25lOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1idG4tLXByaW1hcnksCiN3ZTQtbmF2aWdhdG9yIC5hY2gtYnRuLS1wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5LCAjNDA2ZGIxKTsKICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSwgI2ZmZik7CiAgICBib3JkZXI6IDA7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1idG4tLXNlY29uZGFyeSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1idG4tLXNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeS1hY2NlbnQsICNkM2U1ZmYpOwogICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsKICAgIGJvcmRlcjogMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWJ0bi0tZ2hvc3QsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtYnRuLS1naG9zdDpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbWFpbiwgIzE3MWExZik7CiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yOwogICAgb3V0bGluZS1vZmZzZXQ6IC0zLjVweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWJ0bi0tc20geyBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0teC1zbWFsbCwgMTUuMnB4KTsgcGFkZGluZzogLjZlbSAxZW07IGJvcmRlci1yYWRpdXM6IDVweDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWxpbmstYnRuIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1haW4pOwogICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtc21hbGwsIDE1LjJweCk7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsKfQoKLyogY2FyZDogcmFnZ2lvIDVweCwgZm9uZG8gdGVydGlhcnksIG5lc3N1bmEgb21icmEgKGNvbWUgbGUgY29sb25uZS9ncnVwcGkgZGVsIHNpdG8pICovCiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtY2FyZCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS1jYXJkLAojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtc2hlZXQsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udGFjdC1mb3JtLWNhcmQsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtbGl2ZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdW1tYXJ5LXBhbmVsLAojd2U0LW5hdmlnYXRvciAuYWNoLWV4cGxvcmUtYmFubmVyLAojd2U0LW5hdmlnYXRvciAuYWNoLWFjdGlvbmJhciB7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBib3gtc2hhZG93OiBub25lOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS1jYXJkLAojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtc2hlZXQsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udGFjdC1mb3JtLWNhcmQsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtbGl2ZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdW1tYXJ5LXBhbmVsIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS10ZXJ0aWFyeSwgI2Y4ZjdmOSk7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZCB7IHBhZGRpbmc6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLW1lZGl1bSwgMnJlbSk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkOmhvdmVyIHsgdHJhbnNmb3JtOiBub25lOyBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkLmlzLXNlbGVjdGVkIHsgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnktYWNjZW50LCAjZDNlNWZmKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOyBib3gtc2hhZG93OiBub25lOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9fdGl0bGUgeyBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtLCAyNi40cHgpOyBsaW5lLWhlaWdodDogMS4yOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9fc3VidGl0bGUgeyBmb250LXdlaWdodDogNTAwOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9fZGVzYyB7IGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCwgMTYuOHB4KTsgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLW5hbWUgeyBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtLCAyNi40cHgpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LXRpdGxlIHsgZm9udC13ZWlnaHQ6IDUwMDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWFjdGlvbmJhciB7IGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlLCAjZmZmKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJvcmRlcik7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWFyY2gtaW5wdXQgeyBib3JkZXItcmFkaXVzOiA1cHg7IGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCwgMTYuOHB4KTsgfQoKLyogc3RlcHBlciAqLwojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtbnVtIHsgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbWFpbik7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLXRleHQgeyBmb250LWZhbWlseTogdmFyKC0tZm9udC1tYWluKTsgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtc21hbGwsIDE1LjJweCk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bi5pcy1hY3RpdmUgLmFjaC1zdGVwLXRleHQgeyBmb250LXdlaWdodDogNTAwOyB9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzgxcHgpIHsKICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VjdGlvbi1oZWFkZXIgeyBwYWRkaW5nOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS1tZWRpdW0sIDEuNXJlbSk7IH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm9fX3RpdGxlIHsgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtbGFyZ2UsIDJyZW0pOyB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRlbnQtY29udGFpbmVyIHsgcGFkZGluZzogMCAxNnB4IDQwcHg7IH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZCB7IHBhZGRpbmc6IDIwcHg7IH0KfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENhcmQgZSB0aXRvbGkgY29tZSBsZSBjYXJkIGRlbCBzaXRvIChlcy4gImFDaGlyYWwgQ2FwdHVyZSIgc3UgL2RpZ2l0YWwtaGVhbHRoLyk6CiAgIGZvbmRvIGJpYW5jbywgYm9yZG8gMXB4IGJvcmRlci1saWdodCwgcGFkZGluZyAzMnB4LCBpY29uYSBzZW1wbGljZSA0MHB4LAogICB0aXRvbG8gUG9wcGlucyA2MDAgMTguNnB4LiBTdGVzc28gcmFnZ2lvIGRlaSBib3ggKDE0cHgpIHBlciBjYXJkIGUgYm94LgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpAbWVkaWEgc2NyZWVuIHsKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zZWN0aW9uLWhlYWRlciwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkLAojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1jYXJkLAojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLWNhcmQsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3BlYy1zaGVldCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1jb250YWN0LWZvcm0tY2FyZCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlLAojd2U0LW5hdmlnYXRvciAuYWNoLXN1bW1hcnktcGFuZWwsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtZXhwbG9yZS1iYW5uZXIsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtYWN0aW9uYmFyIHsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBib3gtc2hhZG93OiBub25lOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1wbGF0Zm9ybS1jYXJkLAojd2U0LW5hdmlnYXRvciAuYWNoLXNwZWMtc2hlZXQsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udGFjdC1mb3JtLWNhcmQsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtbGl2ZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdW1tYXJ5LXBhbmVsIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlLCAjZmZmKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ib3JkZXItbGlnaHQsICNkYWRlZTMpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZCB7IHBhZGRpbmc6IDMycHg7IGdhcDogMDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmQ6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7IGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlLCAjZmZmKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmQuaXMtc2VsZWN0ZWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgYmFja2dyb3VuZDogdmFyKC0tc2l0ZS1ibHVlLXRpbnQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9faWNvbiwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkOmhvdmVyIC5hY2gtbWFjcm8tY2FyZF9faWNvbiwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkLmlzLXNlbGVjdGVkIC5hY2gtbWFjcm8tY2FyZF9faWNvbiB7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9faWNvbiBzdmcgeyB3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyB9CgovKiB0aXRvbGkgZGVsbGUgY2FyZDogUG9wcGlucyA2MDAgY29tZSBzdWwgc2l0byAqLwojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmRfX3RpdGxlLAojd2U0LW5hdmlnYXRvciAuYWNoLXBsYXRmb3JtLW5hbWUsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwX190aXRsZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1saXZlX190aXRsZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1wYW5lbC1ibG9jayBoMywKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcGVjLXNoZWV0IGgzLAojd2U0LW5hdmlnYXRvciAuYWNoLWNvbnRhY3QtZm9ybS1jYXJkIGgzLAojd2U0LW5hdmlnYXRvciAuYWNoLWV4cGxvcmUtdGl0bGUsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VjLXRpdGxlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1haW4pOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1iYXNlLCAxOC42NHB4KTsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmRfX3N1YnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS14LXNtYWxsLCAxNS4ycHgpOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgbWFyZ2luLXRvcDogMnB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZF9fZGVzYyB7CiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwsIDE2LjhweCk7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsKICAgIG1hcmdpbi10b3A6IDEycHg7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkX190YWcgeyBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0teC1zbWFsbCwgMTUuMnB4KTsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLyogdGl0b2xpIGRpIHNlemlvbmU6IEFydGVncmEgY29tZSBnbGkgaDIgZGVsIHNpdG8sIG5vbiBwacO5IGdyYW5kaSAqLwojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX190aXRsZSB7IGZvbnQtc2l6ZTogY2xhbXAoMS43NXJlbSwgMS4ycmVtICsgMS40dncsIDIuMXJlbSk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1oMiB7IGZvbnQtc2l6ZTogY2xhbXAoMS40cmVtLCAxLjJyZW0gKyAuNnZ3LCAxLjY1cmVtKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWdyaWQgeyBnYXA6IDI0cHg7IH0KfQoKCgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgdjMgwrcgaGVhZGVyIGJpYW5jbywgYm94ICNFMkVBRjQsIGljb25lIHBpY2NvbGUsIHN0ZXBwZXIgYSBzZWdtZW50aSAoc3RpbGUgc2l0bykKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQG1lZGlhIHNjcmVlbiB7CiN3ZTQtbmF2aWdhdG9yIC5hY2gtaW50cm8gewogICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UsICNmZmYpOwogICAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tbGFyZ2UsIDNyZW0pIHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLW1lZGl1bSwgMnJlbSkgMDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX190aXRsZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRyb19fbGVhZCB7IGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbWFpbiwgIzE3MWExZik7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRyb19fbGVhZCB7IGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tc2Vjb25kYXJ5LCAjMzk1MTcxKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX190aXRsZSBzdHJvbmcgeyBjb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX19sYWJlbCB7IGNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOyBtYXJnaW4tYm90dG9tOiAxMnB4OyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc2VjdGlvbi1oZWFkZXIsCiN3ZTQtbmF2aWdhdG9yIC5hY2gtbWFjcm8tY2FyZC5pcy1zZWxlY3RlZCB7IGJhY2tncm91bmQ6ICNFMkVBRjQ7IH0KCi8qIGljb25lIGRlaSBwcm9maWxpOiBwaWNjb2xlLCBjb21lIGxlIGljb25lIGRlbGxlIGNhcmQgZGVsIHNpdG8gKi8KI3dlNC1uYXZpZ2F0b3IgLmFjaC1tYWNyby1jYXJkX19pY29uLAojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmQ6aG92ZXIgLmFjaC1tYWNyby1jYXJkX19pY29uLAojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmQuaXMtc2VsZWN0ZWQgLmFjaC1tYWNyby1jYXJkX19pY29uIHsgd2lkdGg6IDI0cHg7IGhlaWdodDogMjRweDsgbWFyZ2luLWJvdHRvbTogMTZweDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLW1hY3JvLWNhcmRfX2ljb24gc3ZnIHsgd2lkdGg6IDI0cHg7IGhlaWdodDogMjRweDsgfQoKLyogc3RlcHBlcjogcmlnYSBkaSB0ZXN0byBkaXNjcmV0YSAoYnJlYWRjcnVtYikgKi8KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRybyB7IHBhZGRpbmctYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS1sYXJnZSwgM3JlbSk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwcGVyLXdyYXAgewogICAgbWF4LXdpZHRoOiB2YXIoLS13cC0tc3R5bGUtLWdsb2JhbC0td2lkZS1zaXplLCAxMjYwcHgpOwogICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tbGFyZ2UsIDNyZW0pOwogICAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0teC1sYXJnZSwgNXJlbSkgdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tbWVkaXVtLCAycmVtKSAwOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcHBlciB7CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA0cHggMDsKICAgIHBhZGRpbmc6IDA7CiAgICBiYWNrZ3JvdW5kOiBub25lOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcHBlci10cmFjayB7IGRpc3BsYXk6IG5vbmU7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0biB7CiAgICB3aWR0aDogYXV0bzsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDZweDsKICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICBib3JkZXI6IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgYmFja2dyb3VuZDogbm9uZTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtYnRuICsgLmFjaC1zdGVwLWJ0bjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgd2lkdGg6IDQ4cHg7CiAgICBoZWlnaHQ6IDJweDsKICAgIG1hcmdpbjogMCAxNHB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgYmFja2dyb3VuZDogI0UyRUFGNDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtYnRuLmlzLWRvbmU6OmJlZm9yZSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bi5pcy1hY3RpdmU6OmJlZm9yZSB7IGJhY2tncm91bmQ6IHZhcigtLXNpdGUtYmx1ZSk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLW51bSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bi5pcy1hY3RpdmUgLmFjaC1zdGVwLW51bSwKI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bi5pcy1kb25lIC5hY2gtc3RlcC1udW0sCiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC1idG46bm90KDpkaXNhYmxlZCk6bm90KC5pcy1hY3RpdmUpOmhvdmVyIC5hY2gtc3RlcC1udW0geyBkaXNwbGF5OiBub25lOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC10ZXh0IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC10ZXh0OjpiZWZvcmUgewogICAgY29udGVudDogIiI7CiAgICB3aWR0aDogMThweDsKICAgIGhlaWdodDogMThweDsKICAgIGZsZXg6IG5vbmU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYm9yZGVyOiAycHggc29saWQgI2NmZDhlMzsKICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlLCAjZmZmKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjJzLCBib3JkZXItY29sb3IgLjJzOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC1idG4uaXMtYWN0aXZlIC5hY2gtc3RlcC10ZXh0OjpiZWZvcmUgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaXRlLWJsdWUpOwogICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgdmFyKC0tc2l0ZS1ibHVlKSAwIDRweCwgdHJhbnNwYXJlbnQgNC41cHgpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC1idG4uaXMtZG9uZSAuYWNoLXN0ZXAtdGV4dDo6YmVmb3JlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2l0ZS1ibHVlKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtYmx1ZSkgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyBmaWxsPSdub25lJyBzdHJva2U9J3doaXRlJyBzdHJva2Utd2lkdGg9JzQnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCclM0UlM0NwYXRoIGQ9J00yMCA2IDkgMTdsLTUtNScvJTNFJTNDL3N2ZyUzRSIpIGNlbnRlciAvIDExcHggbm8tcmVwZWF0Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC10ZXh0IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS14LXNtYWxsLCAxNS4ycHgpOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtZmFpbnQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC1idG4uaXMtYWN0aXZlIC5hY2gtc3RlcC10ZXh0IHsgY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0bi5pcy1kb25lIC5hY2gtc3RlcC10ZXh0IHsgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtYnRuOm5vdCg6ZGlzYWJsZWQpOm5vdCguaXMtYWN0aXZlKTpob3ZlciAuYWNoLXN0ZXAtdGV4dCB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzgxcHgpIHsKICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcC10ZXh0IHsgZm9udC1zaXplOiAxM3B4OyB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXBwZXIgeyBmbGV4LXdyYXA6IG5vd3JhcDsgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwLWJ0biArIC5hY2gtc3RlcC1idG46OmJlZm9yZSB7IHdpZHRoOiAxOHB4OyBtYXJnaW46IDAgNnB4OyB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXAtYnRuOm5vdCguaXMtYWN0aXZlKSAuYWNoLXN0ZXAtdGV4dCB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBmb250LXNpemU6IDA7IGdhcDogMDsgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwcGVyLXdyYXAgeyBwYWRkaW5nOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS1sYXJnZSwgMi41cmVtKSAxNnB4IDA7IH0KfQoKCi8qIGNhcmQgb2JpZXR0aXZpOiByZXR0YW5nb2xhcmksIDIgY29sb25uZSwgcGnDuSByZXNwaXJvICovCkBtZWRpYSBzY3JlZW4gewojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOyBnYXA6IDhweCAxMHB4OyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWNhcmQgeyBwYWRkaW5nOiAxMHB4IDE2cHg7IGdhcDogMTJweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWluLWhlaWdodDogMDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1jaGVjayB7IHdpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IGJvcmRlci1yYWRpdXM6IDVweDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi10aXRsZSB7IGZvbnQtc2l6ZTogMTQuNXB4OyBsaW5lLWhlaWdodDogMS4zNTsgZm9udC13ZWlnaHQ6IDUwMDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi10ZXJtIHsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMS40OyBtYXJnaW4tdG9wOiAycHg7IH0KCi8qIHRhZyBmaWx0cm8gKi8KI3dlNC1uYXZpZ2F0b3IgLmFjaC10YWdzIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgbWFyZ2luOiA0cHggMCAyNHB4OyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtdGFnIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDdweDsKICAgIHBhZGRpbmc6IDVweCAxMnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJvcmRlci1saWdodCwgI2RhZGVlMyk7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSwgI2ZmZik7CiAgICBmb250LXNpemU6IDEzLjVweDsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbWFpbiwgIzE3MWExZik7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC10YWcgaSB7IHdpZHRoOiA4cHg7IGhlaWdodDogOHB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6IHZhcigtLXRhZy1jb2xvcik7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC10YWc6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC10YWcuaXMtb24geyBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJsdWUpOyBib3JkZXItY29sb3I6IHZhcigtLXNpdGUtYmx1ZSk7IGNvbG9yOiAjZmZmOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtdGFnLmlzLW9uIGkgeyBiYWNrZ3JvdW5kOiAjZmZmOyB9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzgxcHgpIHsKICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfQp9CgoKLyogc290dG8tYXJlZSwgbGluZ3VhZ2dpbywgY2hpIGZhIGNvc2EgKGxvZ2ljaGUgZGVsIE5hdmlnYXRvciBvcmlnaW5hbGUpICovCkBtZWRpYSBzY3JlZW4gewojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1zdWJoZWFkIHsgZ3JpZC1jb2x1bW46IDEgLyAtMTsgbWFyZ2luOiAxMHB4IDAgMDsgZm9udC1zaXplOiAxMi41cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAuMDJlbTsgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtc3ViaGVhZDpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6IDA7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1yb2xlLWxpc3QgeyBsaXN0LXN0eWxlOiBub25lOyBtYXJnaW46IDEycHggMCAwOyBwYWRkaW5nOiAwOyBkaXNwbGF5OiBncmlkOyBnYXA6IDEwcHg7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1yb2xlLWxpc3QgbGkgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDJweDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS40NTsgcGFkZGluZy1sZWZ0OiAxMnB4OyBib3JkZXItbGVmdDogMnB4IHNvbGlkIHZhcigtLXBmbS1jb2xvcik7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1yb2xlLWxpc3QgbGkgc3Ryb25nIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluLCAjMTcxYTFmKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXJvbGUtbGlzdCBsaSBzcGFuIHsgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1hY2hpcmFsIHsgbWFyZ2luLXRvcDogMTZweDsgZm9udC1zaXplOiAxMy41cHg7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1hY2hpcmFsIC5hY2gtdHJpZ2dlci1jaGlwcyB7IG1hcmdpbi10b3A6IDhweDsgfQp9CgoKLyogaW50ZXN0YXppb25lIGRlaSBncnVwcGk6IGljb25hLCB0aXRvbG8gZSBkZXNjcml6aW9uZSAoY29tZSBuZWwgdmVjY2hpbyBOYXZpZ2F0b3IpICovCkBtZWRpYSBzY3JlZW4gewojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cF9faGVhZCB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDE0cHggMDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cF9fdG9nZ2xlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxNHB4OyBmbGV4OiAxOyB0ZXh0LWFsaWduOiBsZWZ0OyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwX19pY29uIHsKICAgIHdpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7IGZsZXg6IG5vbmU7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7IGJhY2tncm91bmQ6IHZhcigtLWNhdC1jb2xvcik7IGNvbG9yOiAjZmZmOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwX19pY29uIHN2ZyB7IHdpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXBfX3RleHQgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXBfX3RpdGxlIHsgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLWJhc2UsIDE4LjY0cHgpOyBsaW5lLWhlaWdodDogMS4zOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwX19kZXNjIHsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS40NTsgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7IGZvbnQtd2VpZ2h0OiA0MDA7IG1hcmdpbi10b3A6IDJweDsgfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cF9fdG9nZ2xlIC5hY2gtaWNvLS1jaGV2cm9uLWRvd24geyBvcmRlcjogMzsgbWFyZ2luLWxlZnQ6IDhweDsgfQp9CgoKLyogY2FyZCBkZWkgcmVxdWlzaXRpIG5lbCBjb2xvcmUgZGVsIHNlcnZpemlvIFdlNCBjaGUgZ3VpZGEgbCdhcmVhICovCkBtZWRpYSBzY3JlZW4gewojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cCAuYWNoLXNydi1jYXJkOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1jYXQtY29sb3IpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwIC5hY2gtc3J2LWNhcmQuaXMtcmVjb21tZW5kZWQgeyBib3JkZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jYXQtY29sb3IpIDQ1JSwgdHJhbnNwYXJlbnQpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwIC5hY2gtc3J2LWNhcmQuaXMtY2hlY2tlZCB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWNhdC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2F0LWNvbG9yKSA4JSwgI2ZmZik7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zcnYtZ3JvdXAgLmFjaC1zcnYtY2FyZC5pcy1jaGVja2VkIC5hY2gtc3J2LWNoZWNrIHsgYmFja2dyb3VuZDogdmFyKC0tY2F0LWNvbG9yKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1jYXQtY29sb3IpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3J2LWdyb3VwIC5hY2gtcmVjLWJhZGdlIHsKICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2F0LWNvbG9yKSA4MCUsICMwMDApOwogICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNhdC1jb2xvcikgMTQlLCAjZmZmKTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXNydi1ncm91cCAuYWNoLXNydi1ncm91cF9fbWV0YSBzdHJvbmcgeyBjb2xvcjogdmFyKC0tY2F0LWNvbG9yKTsgfQp9CgpAbWVkaWEgcHJpbnQgewogICAgI3dlNC1uYXZpZ2F0b3IgeyB3aWR0aDogYXV0bzsgbWFyZ2luLWlubGluZTogMDsgfQogICAgQHBhZ2UgewogICAgICAgIHNpemU6IEE0IHBvcnRyYWl0OwogICAgICAgIG1hcmdpbjogMTZtbSAxNm1tIDIwbW07CiAgICAgICAgQGJvdHRvbS1sZWZ0IHsKICAgICAgICAgICAgY29udGVudDogIldlNCBIZWFsdGhjYXJlIFMuci5sLiDCtyBpbmZvQHdlNGhlYWx0aGNhcmUuY29tIMK3IHdlNGhlYWx0aGNhcmUuY29tIjsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbWFpbik7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogOHB0OwogICAgICAgICAgICBjb2xvcjogIzgwODA4MDsKICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDZtbTsKICAgICAgICB9CiAgICAgICAgQGJvdHRvbS1yaWdodCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1haW4pOwogICAgICAgICAgICBmb250LXNpemU6IDhwdDsKICAgICAgICAgICAgY29sb3I6ICM4MDgwODA7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA2bW07CiAgICAgICAgfQogICAgfQogICAgYm9keSAqOm5vdCg6aGFzKCN3blByaW50UmVwb3J0KSk6bm90KCN3blByaW50UmVwb3J0LCAjd25QcmludFJlcG9ydCAqKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQogICAgYm9keSAqOmhhcygjd25QcmludFJlcG9ydCkgewogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICBib3JkZXI6IDAgIWltcG9ydGFudDsKICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50OwogICAgfQogICAgaHRtbCwKYm9keSB7CiAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRiAhaW1wb3J0YW50OwogICAgICAgIGNvbG9yOiAjMkUyRTJFOwogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsKICAgICAgICBsaW5lLWhlaWdodDogMS41NTsKICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7CiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtc3RlcHBlci13cmFwLAojd2U0LW5hdmlnYXRvciAuYWNoLXZpZXctc3RlcCwKI3dlNC1uYXZpZ2F0b3IgLmFjaC10b2FzdC1tc2cgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtY29udGVudC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByaW50LXJlcG9ydCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByaW50LXJlcG9ydCBwIHsKICAgICAgICBtYXJnaW46IDA7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTRwdDsKICAgICAgICBib3JkZXItYm90dG9tOiAxLjVwdCBzb2xpZCB2YXIoLS1zaXRlLW5hdnkpOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWxvZ28gewogICAgICAgIGhlaWdodDogMjhwdDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItaGVhZGVyX19tZXRhIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBmb250LXNpemU6IDlwdDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItaGVhZGVyX190aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMC41cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItaW50cm8gewogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDguNXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1mYWludCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB0OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1oMSB7CiAgICAgICAgZm9udC1zaXplOiAyMHB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWgxIHNwYW4gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgICAgIG1hcmdpbi10b3A6IDNwdDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItaW50cm8gPiBwIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgICAgICBtYXgtd2lkdGg6IDE1MG1tOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1rcGlzIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7CiAgICAgICAgZ2FwOiAxMHB0OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWtwaXMgZGl2IHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaXRlLWJnKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHQ7CiAgICAgICAgcGFkZGluZzogOHB0IDEwcHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWtwaXMgYiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC1zaXplOiAxNnB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHIta3BpcyBzcGFuIHsKICAgICAgICBmb250LXNpemU6IDguNXB0OwogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1sYWJlbC0tY29tcCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTJwdDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWtlZXAgewogICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWxpbmsgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi10b3A6IDZwdDsKICAgICAgICBmb250LXNpemU6IDhwdDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICB9CiAgICAvKiBub21lIGRlbGxhIGRpdmlzaW9uZSBuZWwgc3VvIGNvbG9yZTsgaW4gZ3Jhc3NldHRvIHF1ZWxsYSBjaGUgZ3VpZGEgKi8KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItZGl2IHsKICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXBmbS1jb2xvcikgODAlLCAjMUYyQTNBKTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1kaXYgeyBmb250LXdlaWdodDogNjAwOyB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWFycm93IHsgbWFyZ2luOiAwIDRwdDsgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1mYWludCk7IH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItdGFibGUgdGQgYiB7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTRwdDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItaDIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhwdDsKICAgICAgICBmb250LXNpemU6IDEzcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB0OwogICAgICAgIGJvcmRlci1ib3R0b206IDFwdCBzb2xpZCB2YXIoLS1zaXRlLWJvcmRlcik7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogN3B0OwogICAgICAgIGJyZWFrLWFmdGVyOiBhdm9pZDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItbnVtIHsKICAgICAgICB3aWR0aDogMThwdDsKICAgICAgICBoZWlnaHQ6IDE4cHQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgY29sb3I6ICNGRkZGRkY7CiAgICAgICAgZm9udC1zaXplOiA5cHQ7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItbGVhZCB7CiAgICAgICAgZm9udC1zaXplOiA5LjVwdDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHQgIWltcG9ydGFudDsKICAgICAgICBicmVhay1hZnRlcjogYXZvaWQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWxlYWQgc3Ryb25nIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItaDMgewogICAgICAgIGZvbnQtc2l6ZTogMTEuNXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgbWFyZ2luOiA0cHQgMCAxMHB0OwogICAgICAgIGJyZWFrLWFmdGVyOiBhdm9pZDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItaDMgc3BhbiB7CiAgICAgICAgZm9udC1zaXplOiA5cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LWZhaW50KTsKICAgICAgICBtYXJnaW4tbGVmdDogNHB0OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1ncm91cCArIC5hY2gtcHItZ3JvdXAgewogICAgICAgIG1hcmdpbi10b3A6IDEycHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWRvdCB7CiAgICAgICAgd2lkdGg6IDdwdDsKICAgICAgICBoZWlnaHQ6IDdwdDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGZtLWNvbG9yKTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXBmbSB7CiAgICAgICAgYm9yZGVyOiAxcHQgc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhwdDsKICAgICAgICBwYWRkaW5nOiA4cHQgMTFwdDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHQ7CiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItcGZtX19oZWFkIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA3cHQ7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B0OwogICAgfQogICAgLyogdGFnIGRlbGxhIGRpdmlzaW9uZSBjb21lIGFsIHBhc3NvIDQ6IHNmb25kbyBlIGJvcmRvIG5lbCBjb2xvcmUgZGVsbGEgZGl2aXNpb25lICovCiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXRhZyB7CiAgICAgICAgcGFkZGluZzogMi41cHQgOHB0OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDVwdDsKICAgICAgICBib3JkZXI6IDAuNzVwdCBzb2xpZCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcGZtLWNvbG9yKSA0MCUsICNGRkZGRkYpOwogICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wZm0tY29sb3IpIDEwJSwgI0ZGRkZGRik7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgZm9udC1zaXplOiA4cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4zOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXRhYmxlIHRkIC5hY2gtcHItdGFnIHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiBmaXQtY29udGVudDsgbWFyZ2luOiAwIDAgNHB0OyB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXBmbV9fbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXBmbV9fcm9sZSB7CiAgICAgICAgZm9udC1zaXplOiA5cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LWZhaW50KTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItcGZtX19kZXNjIHsKICAgICAgICBmb250LXNpemU6IDlwdDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHQgIWltcG9ydGFudDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItcGZtX19mb3IgewogICAgICAgIGZvbnQtc2l6ZTogOC41cHQ7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXBmbV9fZm9yIGIgewogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWZsb3dzIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICBnYXA6IDhwdDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItZmxvdyB7CiAgICAgICAgYm9yZGVyOiAxcHQgc29saWQgdmFyKC0tc2l0ZS1ib3JkZXIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhwdDsKICAgICAgICBwYWRkaW5nOiA4cHQgMTFwdDsKICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1mbG93X19wYXRoIHsKICAgICAgICBmb250LXNpemU6IDguNXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1mYWludCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB0OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1mbG93X190aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMHB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B0OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1mbG93X190ZXh0IHsKICAgICAgICBmb250LXNpemU6IDguNXB0OwogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1OwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci1mbG93X190ZXh0IHN0cm9uZyB7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItdGFibGUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgICAgICAgZm9udC1zaXplOiA5cHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXRhYmxlIHRoIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIGZvbnQtc2l6ZTogOC41cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LWZhaW50KTsKICAgICAgICBwYWRkaW5nOiAwIDhwdCA2cHQgMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHQgc29saWQgdmFyKC0tc2l0ZS1ib3JkZXItc3Ryb25nKTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItdGFibGUgdGQgewogICAgICAgIHBhZGRpbmc6IDVwdCA4cHQgNXB0IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC43NXB0IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyKTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci10YWJsZSB0ZCBzdHJvbmcgewogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLXRhYmxlIHRkOmZpcnN0LWNoaWxkIHsKICAgICAgICB3aWR0aDogMzAlOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci10YWJsZSB0ZDpsYXN0LWNoaWxkIHsKICAgICAgICB3aWR0aDogMzQlOwogICAgfQogICAgI3dlNC1uYXZpZ2F0b3IgLmFjaC1wci10YWJsZSB0ciB7CiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItdGFibGVfX2NhdCB0ZCB7CiAgICAgICAgcGFkZGluZy10b3A6IDlwdDsKICAgICAgICBmb250LXNpemU6IDkuNXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtbmF2eSk7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItY29tcCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZ2FwOiA1cHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLWNvbXAgc3BhbiB7CiAgICAgICAgZm9udC1zaXplOiA4LjVwdDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLW5hdnkpOwogICAgICAgIGJvcmRlcjogMC43NXB0IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyLXN0cm9uZyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB0OwogICAgICAgIHBhZGRpbmc6IDJwdCA4cHQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLW5leHQgewogICAgICAgIGJvcmRlcjogMXB0IHNvbGlkIHZhcigtLXNpdGUtYm9yZGVyLXN0cm9uZyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB0OwogICAgICAgIHBhZGRpbmc6IDdwdCAxMXB0OwogICAgICAgIGZvbnQtc2l6ZTogOXB0OwogICAgICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQpOwogICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICB9CiAgICAjd2U0LW5hdmlnYXRvciAuYWNoLXByLW5leHQgc3Ryb25nIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2l0ZS1uYXZ5KTsKICAgICAgICBmb250LXNpemU6IDlwdDsKICAgIH0KICAgICN3ZTQtbmF2aWdhdG9yIC5hY2gtcHItbm90ZSB7CiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogOC41cHQ7CiAgICAgICAgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1mYWludCk7CiAgICB9Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdW0tcGZtcyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdhcDogMTBweDsKICAgIG1hcmdpbi10b3A6IDhweDsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXN1bS1wZm0gewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIGdhcDogNHB4Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtc3VtLXBmbV9fcmVxcyB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDU7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKfQoKCi8qIHBhc3NvIDI6IGRpdmlzaW9uaSBkZWwgcmVxdWlzaXRvLCBwYWxsaW5vIHBpZW5vID0gZ3VpZGEsIHZ1b3RvID0gYWZmaWFuY2EgKi8KQG1lZGlhIHNjcmVlbiB7CiN3ZTQtbmF2aWdhdG9yIC5hY2gtd2hvLAojd2U0LW5hdmlnYXRvciAuYWNoLXdoby1sZWdlbmQgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGdhcDogMnB4IDEycHg7CiAgICBtYXJnaW46IDZweCAwIDA7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS40Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtd2hvLWxlZ2VuZCB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA2cHggMTZweDsKICAgIG1hcmdpbjogMCAwIDE2cHg7CiAgICBwYWRkaW5nOiA5cHggMTRweDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNpdGUtYmctc29mdCwgI2Y0ZjZmOSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXRlLXJhZGl1cyk7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC13aG8tbGVnZW5kX19rIHsgY29sb3I6IHZhcigtLXNpdGUtdGV4dC1tdXRlZCk7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC13aG8tbGVnZW5kIC5hY2gtd2hvX19kaXYgaSB7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7IGJvcmRlci13aWR0aDogMnB4OyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtd2hvX19kaXYgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA1cHg7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0LW11dGVkKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KI3dlNC1uYXZpZ2F0b3IgLmFjaC13aG9fX2Rpdi0tbGVhZCB7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS1zaXRlLXRleHQpOyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtd2hvX19kaXYgaSB7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXBmbS1jb2xvciwgdmFyKC0tc2l0ZS10ZXh0LW11dGVkKSk7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtd2hvX19kaXYtLWxlYWQgaSB7IGJhY2tncm91bmQ6IHZhcigtLXBmbS1jb2xvciwgdmFyKC0tc2l0ZS10ZXh0KSk7IGJvcmRlci1jb2xvcjogdmFyKC0tcGZtLWNvbG9yLCB2YXIoLS1zaXRlLXRleHQpKTsgfQovKiBwYXNzbyAzOiBpIHJlcXVpc2l0aSBjaGUgbGEgZGl2aXNpb25lIGd1aWRhIGhhbm5vIGlsIGZpbGV0dG8gcGllbm8sIHF1ZWxsaSBjaGUgYWZmaWFuY2EgdHJhdHRlZ2dpYXRvICovCiN3ZTQtbmF2aWdhdG9yIC5hY2gtcm9sZS1ncm91cCB7IG1hcmdpbi10b3A6IDE2cHg7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1yb2xlLWdyb3VwX19oZWFkIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA4cHg7CiAgICBmb250LXNpemU6IDEyLjVweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGNvbG9yOiB2YXIoLS1zaXRlLXRleHQtbXV0ZWQpOwp9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcm9sZS1ncm91cF9faGVhZCBzcGFuIHsKICAgIG1pbi13aWR0aDogMjBweDsKICAgIHBhZGRpbmc6IDAgNnB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIGZvbnQtc2l6ZTogMTEuNXB4OwogICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBsZXR0ZXItc3BhY2luZzogMDsKICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wZm0tY29sb3IpIDEyJSwgI2ZmZik7CiAgICBjb2xvcjogdmFyKC0tc2l0ZS10ZXh0KTsKfQojd2U0LW5hdmlnYXRvciAuYWNoLXJvbGUtZ3JvdXAgLmFjaC1yb2xlLWxpc3QgeyBtYXJnaW4tdG9wOiAxMHB4OyB9CiN3ZTQtbmF2aWdhdG9yIC5hY2gtcm9sZS1ncm91cC0tc3VwcG9ydCAuYWNoLXJvbGUtbGlzdCBsaSB7IGJvcmRlci1sZWZ0LXN0eWxlOiBkYXNoZWQ7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1yb2xlLWdyb3VwLS1zdXBwb3J0IC5hY2gtcm9sZS1saXN0IGxpIHN0cm9uZyB7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KfQoKCi8qIGlsIHRpdG9sbyBwYXJ0ZSBkb3ZlIHBhcnRvbm8gaSB0aXRvbGkgZGVsbGUgYWx0cmUgcGFnaW5lIChlcy4gQWJvdXQpOiBzb3ByYSBjJ8OoIHNvbG8gbGEgc3BhemlhdHVyYQogICB4eC1sYXJnZSBkZWwgdGVtYSwgbmVzc3VubyBzcGF6aW8gaW4gcGnDuTsgdHJhIGludHJvIGUgcGFzc2kgdW5vIHNwYXppbyBtZWRpbyAqLwpAbWVkaWEgc2NyZWVuIHsKbWFpbjpoYXMoI3dlNC1uYXZpZ2F0b3IpIHsgcGFkZGluZy10b3A6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLXh4LWxhcmdlLCA3cmVtKSAhaW1wb3J0YW50OyB9CiN3ZTQtbmF2aWdhdG9yIHsgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwICFpbXBvcnRhbnQ7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1pbnRybyB7IHBhZGRpbmctdG9wOiAwOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tbWVkaXVtLCAycmVtKTsgfQojd2U0LW5hdmlnYXRvciAuYWNoLWludHJvX190aXRsZSB7IG1hcmdpbi10b3A6IDA7IH0KI3dlNC1uYXZpZ2F0b3IgLmFjaC1zdGVwcGVyLXdyYXAgewogICAgcGFkZGluZy10b3A6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLW1lZGl1bSwgMnJlbSk7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS1tZWRpdW0sIDJyZW0pOwp9Cn0K\">\n<div id=\"we4-navigator\" class=\"we4-navigator\" data-no-translation data-form-it=\"https:\/\/cobalt.achiral.it\/f\/ct_recjVSV_2S_13RtMr3ZHvGh3B_vtmxnEtqH4XSZH3Y4\/frame\" data-form-en=\"https:\/\/cobalt.achiral.it\/f\/ct_htr8VaGSFZDQFGBa4wek0C0E3vyX1oinntvAOnzyDOY\/frame\">\n        <section class=\"ach-intro\" aria-labelledby=\"achIntroTitle\">\n        <div class=\"ach-intro__inner\">\n            <span class=\"ach-intro__label\" data-i18n=\"intro.eyebrow\"><\/span>\n            <h2 class=\"ach-intro__title\" id=\"achIntroTitle\" data-i18n=\"intro.title\"><\/h2>\n            <p class=\"ach-intro__lead\" data-i18n=\"intro.lead\"><\/p>\n        <\/div>\n    <\/section>\n    <nav class=\"ach-stepper-wrap\" data-i18n-aria-label=\"nav.label\">\n        <div class=\"ach-stepper\">\n            <div class=\"ach-stepper-track\" aria-hidden=\"true\">\n                <div class=\"ach-stepper-progress\" id=\"stepperProgress\"><\/div>\n            <\/div>\n            <button type=\"button\" class=\"ach-step-btn is-active\" id=\"stepIndicator1\" data-step=\"1\">\n                <span class=\"ach-step-num\">01<\/span>\n                <span class=\"ach-step-text\" data-i18n=\"nav.step1\"><\/span>\n            <\/button>\n            <button type=\"button\" class=\"ach-step-btn\" id=\"stepIndicator2\" data-step=\"2\" disabled>\n                <span class=\"ach-step-num\">02<\/span>\n                <span class=\"ach-step-text\" data-i18n=\"nav.step2\"><\/span>\n            <\/button>\n            <button type=\"button\" class=\"ach-step-btn\" id=\"stepIndicator3\" data-step=\"3\" disabled>\n                <span class=\"ach-step-num\">03<\/span>\n                <span class=\"ach-step-text\" data-i18n=\"nav.step3\"><\/span>\n            <\/button>\n            <button type=\"button\" class=\"ach-step-btn\" id=\"stepIndicator4\" data-step=\"4\" disabled>\n                <span class=\"ach-step-num\">04<\/span>\n                <span class=\"ach-step-text\" data-i18n=\"nav.step4\"><\/span>\n            <\/button>\n        <\/div>\n    <\/nav>\n    <div class=\"ach-content-container\">\n                <section class=\"ach-view-step is-visible\" id=\"stepView1\" aria-labelledby=\"step1Title\">\n            <header class=\"ach-section-header\">\n                <span class=\"ach-tag-label\" data-i18n=\"step1.eyebrow\"><\/span>\n                <h1 class=\"ach-h1\" id=\"step1Title\" tabindex=\"-1\" data-i18n=\"step1.title\"><\/h1>\n                <p class=\"ach-lead-text\" data-i18n=\"step1.lead\"><\/p>\n            <\/header>\n            <div class=\"ach-macro-grid\" id=\"macroGrid\"><\/div>\n            <div class=\"ach-or\" data-i18n=\"step1.or\"><\/div>\n            <button type=\"button\" class=\"ach-explore-banner\" id=\"exploreBanner\" aria-pressed=\"false\">\n                <span>\n                    <span class=\"ach-explore-title\" data-i18n=\"step1.noProfile\"><\/span>\n                    <span class=\"ach-explore-desc\" data-i18n=\"step1.noProfileDesc\"><\/span>\n                <\/span>\n                <span class=\"ach-radio-dot\" aria-hidden=\"true\"><i class=\"ach-ico ach-ico--check\"><\/i><\/span>\n            <\/button>\n            <div class=\"ach-actionbar\">\n                <div class=\"ach-actionbar__info\" id=\"s1Info\" aria-live=\"polite\"><\/div>\n                <div class=\"ach-actionbar__actions\">\n                    <button type=\"button\" class=\"ach-btn ach-btn--primary\" id=\"btnStep1Next\" disabled>\n                        <span data-i18n=\"step1.next\"><\/span> <i class=\"ach-ico ach-ico--arrow-right\" aria-hidden=\"true\"><\/i>\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/section>\n                <section class=\"ach-view-step\" id=\"stepView2\" aria-labelledby=\"step2Title\">\n            <header class=\"ach-section-header\">\n                <span class=\"ach-tag-label\" data-i18n=\"step2.eyebrow\"><\/span>\n                <h2 class=\"ach-h2\" id=\"step2Title\" tabindex=\"-1\" data-i18n=\"step2.title\"><\/h2>\n                <p class=\"ach-lead-text\" id=\"step2Subtitle\"><\/p>\n            <\/header>\n            <div class=\"ach-s2-layout\">\n                <div>\n                    <div class=\"ach-controls-bar\">\n                        <div class=\"ach-controls-right\">\n                            <div class=\"ach-search-wrap\">\n                                <label for=\"serviceSearch\" class=\"ach-sr-only\" data-i18n=\"step2.searchLabel\"><\/label>\n                                <input type=\"search\" class=\"ach-search-input\" id=\"serviceSearch\" autocomplete=\"off\" data-i18n-placeholder=\"step2.searchPlaceholder\">\n                                <button type=\"button\" class=\"ach-search-clear\" id=\"btnSearchClear\" data-i18n-aria-label=\"step2.searchClear\" hidden><i class=\"ach-ico ach-ico--times\" aria-hidden=\"true\"><\/i><\/button>\n                            <\/div>\n                            <button type=\"button\" class=\"ach-link-btn\" id=\"recHint\" hidden><\/button>\n                            <button type=\"button\" class=\"ach-link-btn ach-link-btn--muted\" id=\"btnClearAllSrv\" data-i18n=\"step2.clearAll\"><\/button>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ach-tags\" id=\"filterTags\" role=\"group\" data-i18n-aria-label=\"step2.filterLabel\"><\/div>\n                    <div id=\"servicesGrid\"><\/div>\n                <\/div>\n                <aside class=\"ach-live\" data-i18n-aria-label=\"step2.previewLabel\">\n                    <div class=\"ach-live__title\" data-i18n=\"step2.previewTitle\"><\/div>\n                    <div class=\"ach-live__list\" id=\"livePfmList\" aria-live=\"polite\"><\/div>\n                <\/aside>\n            <\/div>\n            <div class=\"ach-actionbar\">\n                <button type=\"button\" class=\"ach-btn ach-btn--ghost\" id=\"btnStep2Prev\">\n                    <i class=\"ach-ico ach-ico--arrow-left\" aria-hidden=\"true\"><\/i> <span class=\"ach-hide-sm\" data-i18n=\"step2.prev\"><\/span>\n                <\/button>\n                <div class=\"ach-actionbar__info\" id=\"s2Info\" aria-live=\"polite\"><\/div>\n                <div class=\"ach-actionbar__actions\">\n                    <button type=\"button\" class=\"ach-btn ach-btn--primary\" id=\"btnStep2Next\">\n                        <span data-i18n=\"step2.next\"><\/span> <i class=\"ach-ico ach-ico--arrow-right\" aria-hidden=\"true\"><\/i>\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/section>\n                <section class=\"ach-view-step\" id=\"stepView3\" aria-labelledby=\"step3Title\">\n            <header class=\"ach-section-header\">\n                <span class=\"ach-tag-label\" data-i18n=\"step3.eyebrow\"><\/span>\n                <h2 class=\"ach-h2\" id=\"step3Title\" tabindex=\"-1\" data-i18n=\"step3.title\"><\/h2>\n                <p class=\"ach-lead-text\" id=\"step3Subtitle\"><\/p>\n            <\/header>\n            <div class=\"ach-results-layout\">\n                <div id=\"platformsResultsContainer\"><\/div>\n                <div class=\"ach-summary-panel\">\n                    <div class=\"ach-panel-block\">\n                        <h3 data-i18n=\"step3.flowsTitle\"><\/h3>\n                        <p class=\"ach-panel-block__desc\" data-i18n=\"step3.flowsLead\"><\/p>\n                        <div class=\"ach-flows\" id=\"flowNarrativeText\"><\/div>\n                    <\/div>\n                    <div class=\"ach-panel-block\">\n                        <h3 data-i18n=\"step3.complianceTitle\"><\/h3>\n                        <p class=\"ach-panel-block__desc\" data-i18n=\"step3.complianceLead\"><\/p>\n                        <div id=\"complianceGrid\"><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"ach-actionbar\">\n                <button type=\"button\" class=\"ach-btn ach-btn--ghost\" id=\"btnStep3Prev\">\n                    <i class=\"ach-ico ach-ico--arrow-left\" aria-hidden=\"true\"><\/i> <span class=\"ach-hide-sm\" data-i18n=\"step3.prev\"><\/span>\n                <\/button>\n                <div class=\"ach-actionbar__info\" id=\"s3Info\"><\/div>\n                <div class=\"ach-actionbar__actions\">\n                    <button type=\"button\" class=\"ach-btn ach-btn--primary\" id=\"btnStep3Next\">\n                        <span data-i18n=\"step3.next\"><\/span> <i class=\"ach-ico ach-ico--arrow-right\" aria-hidden=\"true\"><\/i>\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/section>\n                <section class=\"ach-view-step\" id=\"stepView4\" aria-labelledby=\"step4Title\">\n            <header class=\"ach-section-header\">\n                <span class=\"ach-tag-label\" data-i18n=\"step4.eyebrow\"><\/span>\n                <h2 class=\"ach-h2\" id=\"step4Title\" tabindex=\"-1\" data-i18n=\"step4.title\"><\/h2>\n                <p class=\"ach-lead-text\" data-i18n=\"step4.lead\"><\/p>\n                <div class=\"ach-header-back\">\n                    <button type=\"button\" class=\"ach-link-btn\" id=\"btnStep4Prev\">\n                        <i class=\"ach-ico ach-ico--arrow-left\" aria-hidden=\"true\"><\/i> <span data-i18n=\"step4.back\"><\/span>\n                    <\/button>\n                <\/div>\n            <\/header>\n            <div class=\"ach-step4-grid\">\n                <div class=\"ach-spec-sheet\">\n                    <div class=\"ach-spec-sheet__head\">\n                        <h3 data-i18n=\"step4.summaryTitle\"><\/h3>\n                        <button type=\"button\" class=\"ach-link-btn\" id=\"btnEditServices\" data-i18n=\"step4.edit\"><\/button>\n                    <\/div>\n                    <div class=\"ach-spec-row\">\n                        <div class=\"ach-spec-label\" data-i18n=\"step4.profile\"><\/div>\n                        <div class=\"ach-spec-val\" id=\"sumEntity\"><\/div>\n                    <\/div>\n                    <div class=\"ach-spec-row\">\n                        <div class=\"ach-spec-label\" data-i18n=\"step4.platforms\"><\/div>\n                        <div class=\"ach-sum-pfms\" id=\"sumPlatforms\"><\/div>\n                    <\/div>\n                    <div class=\"ach-spec-row\">\n                        <div class=\"ach-spec-label\" data-i18n=\"step4.requirements\"><\/div>\n                        <div class=\"ach-spec-chips\" id=\"sumServices\"><\/div>\n                    <\/div>\n                    <div class=\"ach-spec-row\">\n                        <div class=\"ach-spec-label\" data-i18n=\"step4.compliance\"><\/div>\n                        <div class=\"ach-spec-chips\" id=\"sumCompliance\"><\/div>\n                    <\/div>\n                    <div class=\"ach-spec-actions\">\n                        <button type=\"button\" class=\"ach-btn ach-btn--secondary ach-btn--sm\" id=\"btnCopyReport\" data-i18n=\"step4.copy\"><\/button>\n                        <button type=\"button\" class=\"ach-btn ach-btn--secondary ach-btn--sm\" id=\"btnPrintReport\" data-i18n=\"step4.print\"><\/button>\n                    <\/div>\n                <\/div>\n                <div class=\"ach-contact-form-card\">\n                    <h3 data-i18n=\"step4.formTitle\"><\/h3>\n                                        <iframe class=\"ach-cobalt-frame\" id=\"cobaltFrame\" loading=\"lazy\" data-i18n-title=\"step4.formTitle\" hidden><\/iframe>\n                    <p class=\"ach-lead-text\" id=\"cobaltMissing\" data-i18n=\"step4.formMissing\"><\/p>\n                <\/div>\n            <\/div>\n        <\/section>\n    <\/div>\n    <div class=\"ach-toast-msg\" id=\"wnToast\" role=\"status\" aria-live=\"polite\">\n        <i class=\"ach-ico ach-ico--check-circle\" id=\"toastIcon\" aria-hidden=\"true\"><\/i>\n        <span id=\"toastText\"><\/span>\n    <\/div>\n        <div class=\"ach-print-report\" id=\"wnPrintReport\" aria-hidden=\"true\"><\/div>\n<\/div>\n<script id=\"we4-navigator-js\" src=\"data:text\/javascript;base64,LyogV2U0IFNlcnZpY2VzIE5hdmlnYXRvciDigJQgcG9ydGluZyBkZWwgY29uZmlndXJhdG9yZSBhQ2hpcmFsIChhY2hpcmFsLml0L2VuL2Vjb3N5c3RlbS8pCiAgIGNvbiBpIGRhdGkgV2U0IEhlYWx0aGNhcmU6IHByb2ZpbGkg4oaSIHJlcXVpc2l0aSDihpIgc2Vydml6aSBXZTQg4oaSIHJpZXBpbG9nbyBlIGNvbnRhdHRvLiAqLwooZnVuY3Rpb24gKCkgewondXNlIHN0cmljdCc7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFdlNCBTZXJ2aWNlcyBOYXZpZ2F0b3Ig4oCUIERhdGkKICAgTUFDUk9fRU5USVRJRVM6IHByb2ZpbGkgKFBhc3NvIDEpIMK3IFBMQVRGT1JNU19EQVRBOiBzZXJ2aXppIFdlNCAoQ2xpbmljYWwgUmVzZWFyY2gsIFJlZ3VsYXRvcnksIERpZ2l0YWwgSGVhbHRoKQogICBJVEVNU19EQVRBOiByZXF1aXNpdGkgZSBzZXJ2aXppbyBXZTQgY2hlIGxpIGd1aWRhIChwcmltYXJ5KSBvIHN1cHBvcnRhIChzZWNvbmRhcnkpCiAgIERBVEFfRkxPV1M6IGNvbWUgbGF2b3Jhbm8gaW5zaWVtZSBpIHNlcnZpemkgV2U0IChQYXNzbyAzIGUgUERGKQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKY29uc3QgTUFDUk9fRU5USVRJRVMgPSBbCiAgewogICAgImlkIjogInNwb25zb3IiLAogICAgIm5hbWUiOiB7CiAgICAgICJlbiI6ICJQaGFybWEgLyBCaW90ZWNoIFNwb25zb3IiLAogICAgICAiaXQiOiAiU3BvbnNvciBmYXJtYWNldXRpY28gLyBiaW90ZWNoIgogICAgfSwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIml0IjogIkNvbmR1Y2Ugc3R1ZGkgc3UgdW4gZmFybWFjbyIsCiAgICAgICJlbiI6ICJSdW5zIHRyaWFscyBvbiBhIGNvbXBvdW5kIgogICAgfSwKICAgICJkZXNjIjogewogICAgICAiZW4iOiAiUnVuIHRyaWFscyBvbiB5b3VyIGNvbXBvdW5kIHdpdGggZnVsbCBvcGVyYXRpb25hbCBhbmQgcmVndWxhdG9yeSB2aXNpYmlsaXR5LiIsCiAgICAgICJpdCI6ICJDb25kdWNpIHN0dWRpIHN1bCB0dW8gZmFybWFjbyBjb24gcGllbmEgdmlzaWJpbGl0w6Agb3BlcmF0aXZhIGUgcmVnb2xhdG9yaWEuIgogICAgfSwKICAgICJpY29uU3ZnIjogIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHBhdGggZD1cIm0xMC41IDIwLjUgMTAtMTBhNC45NSA0Ljk1IDAgMSAwLTctN2wtMTAgMTBhNC45NSA0Ljk1IDAgMSAwIDcgN1pcIi8+PHBhdGggZD1cIm04LjUgOC41IDcgN1wiLz48L3N2Zz4iLAogICAgIml0ZW1zIjogWwogICAgICAiZmVhc2liaWxpdHkiLAogICAgICAicHJvdG9jb2wiLAogICAgICAiZXRoaWNzIiwKICAgICAgInJlY3J1aXQiLAogICAgICAiZWRjIiwKICAgICAgImVwcm8iLAogICAgICAibW9uaXRvciIsCiAgICAgICJkYXRhcXVhbGl0eSIsCiAgICAgICJzdGF0cyIsCiAgICAgICJwdiIsCiAgICAgICJlY29uc2VudCIsCiAgICAgICJhaWRhdGEiCiAgICBdLAogICAgImNvcmVJdGVtcyI6IFsKICAgICAgImZlYXNpYmlsaXR5IiwKICAgICAgInByb3RvY29sIiwKICAgICAgImV0aGljcyIsCiAgICAgICJyZWNydWl0IiwKICAgICAgImVkYyIsCiAgICAgICJlcHJvIiwKICAgICAgIm1vbml0b3IiLAogICAgICAiZGF0YXF1YWxpdHkiLAogICAgICAic3RhdHMiLAogICAgICAicHYiLAogICAgICAiZWNvbnNlbnQiLAogICAgICAiYWlkYXRhIgogICAgXQogIH0sCiAgewogICAgImlkIjogIm1lZHRlY2giLAogICAgIm5hbWUiOiB7CiAgICAgICJlbiI6ICJEZXZpY2UgLyBTYU1EIE1hbnVmYWN0dXJlciIsCiAgICAgICJpdCI6ICJQcm9kdXR0b3JlIGRpIGRpc3Bvc2l0aXZpIC8gU2FNRCIKICAgIH0sCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJpdCI6ICJEaXNwb3NpdGl2byBtZWRpY28gbyBzb2Z0d2FyZSIsCiAgICAgICJlbiI6ICJNZWRpY2FsIGRldmljZSBvciBzb2Z0d2FyZSIKICAgIH0sCiAgICAiZGVzYyI6IHsKICAgICAgImVuIjogIkNFIG1hcmtpbmcsIHBvc3QtbWFya2V0IHN1cnZlaWxsYW5jZSwgSUVDIDYyMzA0IHNvZnR3YXJlIGxpZmVjeWNsZS4iLAogICAgICAiaXQiOiAiTWFyY2F0dXJhIENFLCBzb3J2ZWdsaWFuemEgcG9zdC1tYXJrZXQsIGNpY2xvIGRpIHZpdGEgc29mdHdhcmUgSUVDIDYyMzA0LiIKICAgIH0sCiAgICAiaWNvblN2ZyI6ICI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxwYXRoIGQ9XCJNMTEgMnYyXCIvPjxwYXRoIGQ9XCJNNSAydjJcIi8+PHBhdGggZD1cIk01IDNINGEyIDIgMCAwIDAtMiAydjRhNiA2IDAgMCAwIDEyIDBWNWEyIDIgMCAwIDAtMi0yaC0xXCIvPjxwYXRoIGQ9XCJNOCAxNWE2IDYgMCAwIDAgMTIgMHYtM1wiLz48Y2lyY2xlIGN4PVwiMjBcIiBjeT1cIjEwXCIgcj1cIjJcIi8+PC9zdmc+IiwKICAgICJpdGVtcyI6IFsKICAgICAgInJlZ3N0cmF0ZWd5IiwKICAgICAgImNlbWFya2luZyIsCiAgICAgICJzYW1kIiwKICAgICAgImFpYWN0IiwKICAgICAgImNsaW5ldmFsIiwKICAgICAgImRvc3NpZXIiLAogICAgICAicG1jZiIsCiAgICAgICJ2aWdpbGFuY2UiLAogICAgICAicW1zIiwKICAgICAgImNzdiIsCiAgICAgICJhdWRpdCIKICAgIF0sCiAgICAiY29yZUl0ZW1zIjogWwogICAgICAicmVnc3RyYXRlZ3kiLAogICAgICAiY2VtYXJraW5nIiwKICAgICAgInNhbWQiLAogICAgICAiYWlhY3QiLAogICAgICAiY2xpbmV2YWwiLAogICAgICAiZG9zc2llciIsCiAgICAgICJwbWNmIiwKICAgICAgInZpZ2lsYW5jZSIsCiAgICAgICJxbXMiLAogICAgICAiY3N2IiwKICAgICAgImF1ZGl0IgogICAgXQogIH0sCiAgewogICAgImlkIjogImhvc3BpdGFsIiwKICAgICJuYW1lIjogewogICAgICAiZW4iOiAiSG9zcGl0YWwgLyBDbGluaWMiLAogICAgICAiaXQiOiAiT3NwZWRhbGUgLyBDbGluaWNhIgogICAgfSwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIml0IjogIlN0cnV0dHVyYSBzYW5pdGFyaWEiLAogICAgICAiZW4iOiAiSGVhbHRoY2FyZSBwcm92aWRlciIKICAgIH0sCiAgICAiZGVzYyI6IHsKICAgICAgImVuIjogIkRlbGl2ZXIgY2FyZSwgdGVsZWhlYWx0aCBhbmQgY29udGludW91cyBmb2xsb3ctdXAuIiwKICAgICAgIml0IjogIkFzc2lzdGVuemEsIHRlbGVtZWRpY2luYSBlIGZvbGxvdy11cCBjb250aW51byBkZWkgcGF6aWVudGkuIgogICAgfSwKICAgICJpY29uU3ZnIjogIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHBhdGggZD1cIk0xMiA2djRcIi8+PHBhdGggZD1cIk0xNCAxNGgtNFwiLz48cGF0aCBkPVwiTTE0IDE4aC00XCIvPjxwYXRoIGQ9XCJNMTQgOGgtNFwiLz48cGF0aCBkPVwiTTE4IDEyaDJhMiAyIDAgMCAxIDIgMnY2YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi05YTIgMiAwIDAgMSAyLTJoMlwiLz48cGF0aCBkPVwiTTE4IDIyVjRhMiAyIDAgMCAwLTItMkg4YTIgMiAwIDAgMC0yIDJ2MThcIi8+PC9zdmc+IiwKICAgICJpdGVtcyI6IFsKICAgICAgInRlbGVtZWQiLAogICAgICAibW9iaWxlIiwKICAgICAgImNvbnRlbnQiLAogICAgICAiZWNvbnNlbnQiLAogICAgICAid2VhcmFibGUiLAogICAgICAiaWRlbnRpdHkiLAogICAgICAicHJpdmFjeSIsCiAgICAgICJxbXMiCiAgICBdLAogICAgImNvcmVJdGVtcyI6IFsKICAgICAgInRlbGVtZWQiLAogICAgICAibW9iaWxlIiwKICAgICAgImNvbnRlbnQiLAogICAgICAiZWNvbnNlbnQiLAogICAgICAid2VhcmFibGUiLAogICAgICAiaWRlbnRpdHkiLAogICAgICAicHJpdmFjeSIsCiAgICAgICJxbXMiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAic3RhcnR1cCIsCiAgICAibmFtZSI6IHsKICAgICAgImVuIjogIkRpZ2l0YWwgSGVhbHRoIFN0YXJ0dXAiLAogICAgICAiaXQiOiAiU3RhcnR1cCBkaSBkaWdpdGFsIGhlYWx0aCIKICAgIH0sCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJpdCI6ICJTdGFydHVwIC8gc2NhbGUtdXAgZUhlYWx0aCIsCiAgICAgICJlbiI6ICJlSGVhbHRoIHN0YXJ0dXAgLyBzY2FsZS11cCIKICAgIH0sCiAgICAiZGVzYyI6IHsKICAgICAgImVuIjogIkJ1aWxkLCB2YWxpZGF0ZSBhbmQgY2VydGlmeSB5b3VyIGRpZ2l0YWwtaGVhbHRoIHByb2R1Y3QuIiwKICAgICAgIml0IjogIlN2aWx1cHBhLCBjb252YWxpZGEgZSBjZXJ0aWZpY2EgaWwgdHVvIHByb2RvdHRvIGRpIGRpZ2l0YWwgaGVhbHRoLiIKICAgIH0sCiAgICAiaWNvblN2ZyI6ICI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxwYXRoIGQ9XCJNNC41IDE2LjVjLTEuNSAxLjI2LTIgNS0yIDVzMy43NC0uNSA1LTJjLjcxLS44NC43LTIuMTMtLjA5LTIuOTFhMi4xOCAyLjE4IDAgMCAwLTIuOTEtLjA5elwiLz48cGF0aCBkPVwibTEyIDE1LTMtM2EyMiAyMiAwIDAgMSAyLTMuOTVBMTIuODggMTIuODggMCAwIDEgMjIgMmMwIDIuNzItLjc4IDcuNS02IDExYTIyLjM1IDIyLjM1IDAgMCAxLTQgMnpcIi8+PHBhdGggZD1cIk05IDEySDRzLjU1LTMuMDMgMi00YzEuNjItMS4wOCA1IDAgNSAwXCIvPjxwYXRoIGQ9XCJNMTIgMTV2NXMzLjAzLS41NSA0LTJjMS4wOC0xLjYyIDAtNSAwLTVcIi8+PC9zdmc+IiwKICAgICJpdGVtcyI6IFsKICAgICAgImNvZGV2IiwKICAgICAgInNhbWQiLAogICAgICAiYWlhY3QiLAogICAgICAiY3N2IiwKICAgICAgInFtcyIsCiAgICAgICJpZGVudGl0eSIsCiAgICAgICJwcml2YWN5IiwKICAgICAgImFpZGF0YSIsCiAgICAgICJ0ZWxlbWVkIiwKICAgICAgImRvc3NpZXIiCiAgICBdLAogICAgImNvcmVJdGVtcyI6IFsKICAgICAgImNvZGV2IiwKICAgICAgInNhbWQiLAogICAgICAiYWlhY3QiLAogICAgICAiY3N2IiwKICAgICAgInFtcyIsCiAgICAgICJpZGVudGl0eSIsCiAgICAgICJwcml2YWN5IiwKICAgICAgImFpZGF0YSIsCiAgICAgICJ0ZWxlbWVkIiwKICAgICAgImRvc3NpZXIiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiYWNhZGVtaWMiLAogICAgIm5hbWUiOiB7CiAgICAgICJlbiI6ICJVbml2ZXJzaXR5IC8gUmVzZWFyY2ggY2VudHJlIiwKICAgICAgIml0IjogIlVuaXZlcnNpdMOgIC8gQ2VudHJvIGRpIHJpY2VyY2EiCiAgICB9LAogICAgInN1YnRpdGxlIjogewogICAgICAiaXQiOiAiUmljZXJjYSBhY2NhZGVtaWNhIGUgbm9uIHByb2ZpdCIsCiAgICAgICJlbiI6ICJBY2FkZW1pYyAmIG5vbi1wcm9maXQgcmVzZWFyY2giCiAgICB9LAogICAgImRlc2MiOiB7CiAgICAgICJlbiI6ICJJbmRlcGVuZGVudCByZXNlYXJjaCwgcmVnaXN0cmllcyBhbmQgb2JzZXJ2YXRpb25hbCBzdHVkaWVzLiIsCiAgICAgICJpdCI6ICJSaWNlcmNhIGluZGlwZW5kZW50ZSwgcmVnaXN0cmkgZSBzdHVkaSBvc3NlcnZhemlvbmFsaS4iCiAgICB9LAogICAgImljb25TdmciOiAiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cGF0aCBkPVwiTTIxLjQyIDEwLjkyMmExIDEgMCAwIDAtLjAxOS0xLjgzOEwxMi44MyA1LjE4YTIgMiAwIDAgMC0xLjY2IDBMMi42IDkuMDhhMSAxIDAgMCAwIDAgMS44MzJsOC41NyAzLjkwOGEyIDIgMCAwIDAgMS42NiAwelwiLz48cGF0aCBkPVwiTTIyIDEwdjZcIi8+PHBhdGggZD1cIk02IDEyLjVWMTZhNiAzIDAgMCAwIDEyIDB2LTMuNVwiLz48L3N2Zz4iLAogICAgIml0ZW1zIjogWwogICAgICAiZXRoaWNzIiwKICAgICAgImZlYXNpYmlsaXR5IiwKICAgICAgInByb3RvY29sIiwKICAgICAgImVkYyIsCiAgICAgICJlcHJvIiwKICAgICAgIm1vbml0b3IiLAogICAgICAiZGF0YXF1YWxpdHkiLAogICAgICAic3RhdHMiLAogICAgICAiZWNvbnNlbnQiLAogICAgICAicndlIgogICAgXSwKICAgICJjb3JlSXRlbXMiOiBbCiAgICAgICJldGhpY3MiLAogICAgICAiZmVhc2liaWxpdHkiLAogICAgICAicHJvdG9jb2wiLAogICAgICAiZWRjIiwKICAgICAgImVwcm8iLAogICAgICAibW9uaXRvciIsCiAgICAgICJkYXRhcXVhbGl0eSIsCiAgICAgICJzdGF0cyIsCiAgICAgICJlY29uc2VudCIsCiAgICAgICJyd2UiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiY3JvIiwKICAgICJuYW1lIjogewogICAgICAiZW4iOiAiQ1JPIC8gUGFydG5lciIsCiAgICAgICJpdCI6ICJDUk8gLyBQYXJ0bmVyIgogICAgfSwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIml0IjogIkNvbnRyYWN0IFJlc2VhcmNoIE9yZ2FuaXphdGlvbiIsCiAgICAgICJlbiI6ICJDb250cmFjdCBSZXNlYXJjaCBPcmdhbml6YXRpb24iCiAgICB9LAogICAgImRlc2MiOiB7CiAgICAgICJlbiI6ICJFbmQtdG8tZW5kIGNsaW5pY2FsIHRyaWFscyBmb3IgZXh0ZXJuYWwgc3BvbnNvcnMuIiwKICAgICAgIml0IjogIkdlc3Rpb25lIGNvbXBsZXRhIGRpIHN0dWRpIGNsaW5pY2kgcGVyIGNvbnRvIGRpIHNwb25zb3IgZXN0ZXJuaS4iCiAgICB9LAogICAgImljb25TdmciOiAiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cmVjdCB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI0XCIgeD1cIjhcIiB5PVwiMlwiIHJ4PVwiMVwiIHJ5PVwiMVwiLz48cGF0aCBkPVwiTTE2IDRoMmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyXCIvPjxwYXRoIGQ9XCJNMTIgMTFoNFwiLz48cGF0aCBkPVwiTTEyIDE2aDRcIi8+PHBhdGggZD1cIk04IDExaC4wMVwiLz48cGF0aCBkPVwiTTggMTZoLjAxXCIvPjwvc3ZnPiIsCiAgICAiaXRlbXMiOiBbCiAgICAgICJmZWFzaWJpbGl0eSIsCiAgICAgICJwcm90b2NvbCIsCiAgICAgICJldGhpY3MiLAogICAgICAiY3RtcyIsCiAgICAgICJyZWNydWl0IiwKICAgICAgImVkYyIsCiAgICAgICJlcHJvIiwKICAgICAgIm1vbml0b3IiLAogICAgICAiZGF0YXF1YWxpdHkiLAogICAgICAic3RhdHMiLAogICAgICAicHYiLAogICAgICAiZGN0IiwKICAgICAgImlkZW50aXR5IiwKICAgICAgImFpZGF0YSIsCiAgICAgICJhdWRpdCIKICAgIF0sCiAgICAiY29yZUl0ZW1zIjogWwogICAgICAiZmVhc2liaWxpdHkiLAogICAgICAicHJvdG9jb2wiLAogICAgICAiZXRoaWNzIiwKICAgICAgImN0bXMiLAogICAgICAicmVjcnVpdCIsCiAgICAgICJlZGMiLAogICAgICAiZXBybyIsCiAgICAgICJtb25pdG9yIiwKICAgICAgImRhdGFxdWFsaXR5IiwKICAgICAgInN0YXRzIiwKICAgICAgInB2IiwKICAgICAgImRjdCIsCiAgICAgICJpZGVudGl0eSIsCiAgICAgICJhaWRhdGEiLAogICAgICAiYXVkaXQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiYXNpYSIsCiAgICAibmFtZSI6IHsKICAgICAgIml0IjogIkF6aWVuZGEgZXh0cmEtVUUgKEFzaWEpIiwKICAgICAgImVuIjogIk5vbi1FVSBjb21wYW55IChBc2lhKSIKICAgIH0sCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJpdCI6ICJJbmdyZXNzbyBuZWwgbWVyY2F0byBVRSIsCiAgICAgICJlbiI6ICJFbnRlcmluZyB0aGUgRVUgbWFya2V0IgogICAgfSwKICAgICJkZXNjIjogewogICAgICAiZW4iOiAiQnJpbmcgeW91ciBkZXZpY2UgdG8gdGhlIEV1cm9wZWFuIG1hcmtldC4iLAogICAgICAiaXQiOiAiUG9ydGEgaWwgdHVvIGRpc3Bvc2l0aXZvIHN1bCBtZXJjYXRvIGV1cm9wZW8uIgogICAgfSwKICAgICJpY29uU3ZnIjogIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiLz48cGF0aCBkPVwiTTEyIDJhMTQuNSAxNC41IDAgMCAwIDAgMjAgMTQuNSAxNC41IDAgMCAwIDAtMjBcIi8+PHBhdGggZD1cIk0yIDEyaDIwXCIvPjwvc3ZnPiIsCiAgICAiaXRlbXMiOiBbCiAgICAgICJhc2lhZXUiLAogICAgICAiY2VtYXJraW5nIiwKICAgICAgInNhbWQiLAogICAgICAiYWlhY3QiLAogICAgICAiY2xpbmV2YWwiLAogICAgICAicW1zIiwKICAgICAgImNzdiIsCiAgICAgICJkb3NzaWVyIiwKICAgICAgInBtY2YiCiAgICBdLAogICAgImNvcmVJdGVtcyI6IFsKICAgICAgImFzaWFldSIsCiAgICAgICJjZW1hcmtpbmciLAogICAgICAic2FtZCIsCiAgICAgICJhaWFjdCIsCiAgICAgICJjbGluZXZhbCIsCiAgICAgICJxbXMiLAogICAgICAiY3N2IiwKICAgICAgImRvc3NpZXIiLAogICAgICAicG1jZiIKICAgIF0KICB9Cl07Cgpjb25zdCBQTEFURk9STVNfREFUQSA9IHsKICAiY3IiOiB7CiAgICAibmFtZSI6ICJXZTQgQ2xpbmljYWwgUmVzZWFyY2giLAogICAgInJvbGUiOiB7CiAgICAgICJpdCI6ICJDUk8gwrcgU3R1ZGkgY2xpbmljaSIsCiAgICAgICJlbiI6ICJDUk8gwrcgQ2xpbmljYWwgVHJpYWxzIgogICAgfSwKICAgICJjb2xvciI6ICIjM2RiM2E0IiwKICAgICJuYXJyYXRpdmUiOiB7CiAgICAgICJpdCI6ICJMYSBDUk8gY2hlIHVuaXNjZSBpbCByaWdvcmUgcmVnb2xhdG9yaW8gYWxsYSByYXBpZGl0w6AgZGkgdW7igJlhemllbmRhIGRpIGRpZ2l0YWwgaGVhbHRoIiwKICAgICAgImVuIjogIlRoZSBDUk8gdGhhdCBwYWlycyByZWd1bGF0b3J5IHJpZ29yIHdpdGggdGhlIHNwZWVkIG9mIGEgZGlnaXRhbC1oZWFsdGggY29tcGFueSIKICAgIH0KICB9LAogICJyZWciOiB7CiAgICAibmFtZSI6ICJXZTQgUmVndWxhdG9yeSIsCiAgICAicm9sZSI6IHsKICAgICAgIml0IjogIkFmZmFyaSByZWdvbGF0b3JpIMK3IENvbmZvcm1pdMOgIiwKICAgICAgImVuIjogIlJlZ3VsYXRvcnkgQWZmYWlycyDCtyBDb21wbGlhbmNlIgogICAgfSwKICAgICJjb2xvciI6ICIjMDA3ZWE3IiwKICAgICJuYXJyYXRpdmUiOiB7CiAgICAgICJpdCI6ICJVbmEgc29jaWV0w6AgZGkgY29uc3VsZW56YSByZWdvbGF0b3JpYSBzcGVjaWFsaXp6YXRhOiBwcm9mb25kYSBjb21wZXRlbnphIHN1IE1EUiwgSVZEUiBlIFNhTUQsIHRlbXBpIGRpIHJpc3Bvc3RhIHJhcGlkaSIsCiAgICAgICJlbiI6ICJBIHJlZ3VsYXRvcnkgc21hcnQtYm91dGlxdWU6IGRlZXAgTURSL0lWRFIvU2FNRCBleHBlcnRpc2UsIGhpZ2ggYWdpbGl0eSIKICAgIH0KICB9LAogICJkaCI6IHsKICAgICJuYW1lIjogIldlNCBEaWdpdGFsIEhlYWx0aCIsCiAgICAicm9sZSI6IHsKICAgICAgIml0IjogIlBpYXR0YWZvcm1lIMK3IEVjb3Npc3RlbWEgYUNoaXJhbCIsCiAgICAgICJlbiI6ICJQbGF0Zm9ybXMgwrcgYUNoaXJhbCBFY29zeXN0ZW0iCiAgICB9LAogICAgImNvbG9yIjogIiMyMDg2ZjYiLAogICAgIm5hcnJhdGl2ZSI6IHsKICAgICAgIml0IjogIkzigJllY29zaXN0ZW1hIGFDaGlyYWw6IEVEQywgQ1RNUywgdGVsZW1lZGljaW5hLCBlUU1TIGUgY29pbnZvbGdpbWVudG8gZGVpIHBhemllbnRpLCB0dXR0aSBpbnRlcm9wZXJhYmlsaSIsCiAgICAgICJlbiI6ICJUaGUgYUNoaXJhbCBlY29zeXN0ZW06IEVEQywgQ1RNUywgdGVsZW1lZGljaW5lLCBlUU1TLCBlbmdhZ2VtZW50IOKAlCBpbnRlcm9wZXJhYmxlIgogICAgfQogIH0KfTsKCmNvbnN0IElURU1TX0RBVEEgPSBbCiAgewogICAgImlkIjogImZlYXNpYmlsaXR5IiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogInNldHVwIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIkZlYXNpYmlsaXR5ICYgc3R1ZHkgZGVzaWduIiwKICAgICAgIml0IjogIkZhdHRpYmlsaXTDoCBlIGRpc2Vnbm8gZGVsbG8gc3R1ZGlvIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiQ291bnRyeS9zaXRlIGZlYXNpYmlsaXR5IMK3IGVucm9sbG1lbnQgZm9yZWNhc3Rpbmcgwrcgc3R1ZHkgZGVzaWduIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgY2hlY2sgd2hldGhlciBhbmQgd2hlcmUgeW91ciBzdHVkeSBjYW4gcnVuLCBjaG9vc2UgdGhlIGJlc3Qgc2l0ZXMgYW5kIGRlc2lnbiBpdC4iLAogICAgICAgICJpdCI6ICJWZXJpZmljaGlhbW8gc2UgZSBkb3ZlIGxvIHN0dWRpbyBwdcOyIGVzc2VyZSBjb25kb3R0bywgc2NlZ2xpYW1vIGkgY2VudHJpIG1pZ2xpb3JpIGUgbG8gZGlzZWduaWFtby4iCiAgICAgIH0sCiAgICAgICJ0ZWNoIjogIkNvdW50cnkvc2l0ZSBmZWFzaWJpbGl0eSDCtyBlbnJvbGxtZW50IGZvcmVjYXN0aW5nIMK3IHN0dWR5IGRlc2lnbiIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgImNyIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJyZWciLAogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIkZlYXNpYmlsaXR5LCBzaXRlIHNlbGVjdGlvbiBhbmQgZW5yb2xsbWVudCBmb3JlY2FzdGluZywgd2l0aCBBSSBwcmVkaWN0aXZlIG1vZGVscyBpbiBzdXBwb3J0IiwKICAgICAgICAiaXQiOiAiRmF0dGliaWxpdMOgLCBzZWxlemlvbmUgZGVpIGNlbnRyaSBlIHByZXZpc2lvbmUgZGVsbOKAmWFycnVvbGFtZW50bywgY29uIGlsIHN1cHBvcnRvIGRpIG1vZGVsbGkgcHJlZGl0dGl2aSBiYXNhdGkgc3VsbOKAmUFJIgogICAgICB9LAogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJFYXJseSByZWd1bGF0b3J5IGZyYW1pbmcgYW5kIHByb2R1Y3QgY2xhc3NpZmljYXRpb24iLAogICAgICAgICJpdCI6ICJJbnF1YWRyYW1lbnRvIHJlZ29sYXRvcmlvIGluaXppYWxlIGUgY2xhc3NpZmljYXppb25lIGRlbCBwcm9kb3R0byIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJTaXRlIHBlcmZvcm1hbmNlIEtQSXMgZnJvbSBhQ2hpcmFsIENhcmJvbiIsCiAgICAgICAgIml0IjogIktQSSBkaSBwZXJmb3JtYW5jZSBkZWkgY2VudHJpIGRhIGFDaGlyYWwgQ2FyYm9uIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDYXJib24gKENUTVMpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiSUNILUdDUCBFNihSMykiLAogICAgICAiRVUgQ1RSIDUzNi8yMDE0IgogICAgXQogIH0sCiAgewogICAgImlkIjogInByb3RvY29sIiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogInNldHVwIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIlByb3RvY29sICYgZW5kcG9pbnQgZGVzaWduIiwKICAgICAgIml0IjogIkRpc2Vnbm8gZGVsIHByb3RvY29sbG8gZSBkZWdsaSBlbmRwb2ludCIKICAgIH0sCiAgICAibGFiZWxUZWNoIjogIlByb3RvY29sIGRlc2lnbiDCtyBlbmRwb2ludCBzdHJhdGVneSDCtyBJU08gMTQxNTUiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSB3cml0ZSB0aGUgc3R1ZHkgcHJvdG9jb2wgYW5kIGRlZmluZSBleGFjdGx5IHdoYXQgaXQgbWVhc3VyZXMuIiwKICAgICAgICAiaXQiOiAiU2NyaXZpYW1vIGlsIHByb3RvY29sbG8gZGVsbG8gc3R1ZGlvIGUgZGVmaW5pYW1vIGNvbiBwcmVjaXNpb25lIGNvc2EgbWlzdXJhLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiUHJvdG9jb2wgZGVzaWduIMK3IGVuZHBvaW50IHN0cmF0ZWd5IMK3IElTTyAxNDE1NSIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgImNyIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJyZWciLAogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIlByb3RvY29sIGRlc2lnbiwgZW5kcG9pbnQgZGVmaW5pdGlvbiBhbmQgdGhlIHN0dWR5IG9wZXJhdGlvbmFsIHBsYW4iLAogICAgICAgICJpdCI6ICJTdGVzdXJhIGRlbCBwcm90b2NvbGxvLCBkZWZpbml6aW9uZSBkZWdsaSBlbmRwb2ludCBlIHBpYW5vIG9wZXJhdGl2byBkZWxsbyBzdHVkaW8iCiAgICAgIH0sCiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIlJlZ3VsYXRvcnkgYWNjZXB0YWJpbGl0eSBvZiBlbmRwb2ludHMgKE1EUiAvIElTTyAxNDE1NSkiLAogICAgICAgICJpdCI6ICJBY2NldHRhYmlsaXTDoCByZWdvbGF0b3JpYSBkZWdsaSBlbmRwb2ludCAoTURSIC8gSVNPIDE0MTU1KSIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJQcm90b2NvbCB0dXJuZWQgaW50byBlQ1JGcyBhbmQgZWRpdC1jaGVja3Mgb24gYUNoaXJhbCBDYXB0dXJlIiwKICAgICAgICAiaXQiOiAiSWwgcHJvdG9jb2xsbyB0cmFkb3R0byBpbiBlQ1JGIGUgY29udHJvbGxpIGRpIGNvZXJlbnphIHN1IGFDaGlyYWwgQ2FwdHVyZSIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ2FwdHVyZSAoRURDKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIklDSC1HQ1AgRTYoUjMpIiwKICAgICAgIklTTyAxNDE1NSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJldGhpY3MiLAogICAgImNhdGVnb3J5IjogInN0dWR5IiwKICAgICJzdWIiOiAic2V0dXAiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiRXRoaWNzIENvbW1pdHRlZSAmIHJlZ3VsYXRvcnkgc3VibWlzc2lvbnMiLAogICAgICAiaXQiOiAiQ29taXRhdG8gRXRpY28gZSBkb21hbmRlIGFsbGUgYXV0b3JpdMOgIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiSVJCL0VDIHN1Ym1pc3Npb24gwrcgQ1RBL0NUUiA1MzYvMjAxNCDCtyBlc3NlbnRpYWwgZG9jdW1lbnRzIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgcHJlcGFyZSBhbmQgc3VibWl0IHlvdXIgc3R1ZHkgdG8gdGhlIEV0aGljcyBDb21taXR0ZWUgYW5kIGNvbXBldGVudCBhdXRob3JpdGllcywgYW5kIG1hbmFnZSB0aGUgYXBwcm92YWxzLiIsCiAgICAgICAgIml0IjogIlByZXBhcmlhbW8gZSBwcmVzZW50aWFtbyBsbyBzdHVkaW8gYWwgQ29taXRhdG8gRXRpY28gZSBhbGxlIGF1dG9yaXTDoCBjb21wZXRlbnRpIGUgZ2VzdGlhbW8gbGUgYXV0b3JpenphemlvbmkuIgogICAgICB9LAogICAgICAidGVjaCI6ICJJUkIvRUMgc3VibWlzc2lvbiDCtyBDVEEvQ1RSIDUzNi8yMDE0IMK3IGVzc2VudGlhbCBkb2N1bWVudHMiCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJjciIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAicmVnIgogICAgXSwKICAgICJyb2xlcyI6IHsKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJQcmVwYXJhdGlvbiBhbmQgc3VibWlzc2lvbiB0byB0aGUgRXRoaWNzIENvbW1pdHRlZSBhbmQgY29tcGV0ZW50IGF1dGhvcml0aWVzLCBhbmQgbWFuYWdlbWVudCBvZiBhcHByb3ZhbHMgYW5kIGFtZW5kbWVudHMiLAogICAgICAgICJpdCI6ICJQcmVwYXJhemlvbmUgZSBwcmVzZW50YXppb25lIGRlbGxlIGRvbWFuZGUgYWwgQ29taXRhdG8gRXRpY28gZSBhbGxlIGF1dG9yaXTDoCBjb21wZXRlbnRpLCBnZXN0aW9uZSBkaSBhdXRvcml6emF6aW9uaSBlZCBlbWVuZGFtZW50aSIKICAgICAgfSwKICAgICAgInJlZyI6IHsKICAgICAgICAiZW4iOiAiUmVndWxhdG9yeSBwYXRod2F5IGFuZCBkb2N1bWVudGF0aW9uIHJlcXVpcmVtZW50cyIsCiAgICAgICAgIml0IjogIlBlcmNvcnNvIHJlZ29sYXRvcmlvIGUgcmVxdWlzaXRpIGRvY3VtZW50YWxpIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDb2JhbHQgKGVRTVMvZVRNRikiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJJQ0gtR0NQIEU2KFIzKSIsCiAgICAgICJFVSBDVFIgNTM2LzIwMTQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiY3RtcyIsCiAgICAiY2F0ZWdvcnkiOiAic3R1ZHkiLAogICAgInN1YiI6ICJzZXR1cCIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJTdHVkeSBzZXQtdXA6IHNpdGVzLCBidWRnZXQgJiBjb250cmFjdHMiLAogICAgICAiaXQiOiAiQXZ2aW8gb3BlcmF0aXZvOiBjZW50cmksIGJ1ZGdldCBlIGNvbnRyYXR0aSIKICAgIH0sCiAgICAibGFiZWxUZWNoIjogIkNUTVMgwrcgc2l0ZS92ZW5kb3IgY29udHJhY3RzIMK3IG1pbGVzdG9uZXMgwrcgcGF5bWVudHMiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSBoYW5kbGUgdGhlIG9wZXJhdGlvbmFsIHNldC11cDogc2l0ZSBjb250cmFjdHMsIG1pbGVzdG9uZXMsIGJ1ZGdldHMgYW5kIHRpbWVsaW5lcy4iLAogICAgICAgICJpdCI6ICJHZXN0aWFtbyBs4oCZYXZ2aW8gb3BlcmF0aXZvIGRlbGxvIHN0dWRpbzogY29udHJhdHRpIGNvbiBpIGNlbnRyaSwgc2NhZGVuemUsIGJ1ZGdldCBlIHRlbXBpc3RpY2hlLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiQ1RNUyDCtyBzaXRlL3ZlbmRvciBjb250cmFjdHMgwrcgbWlsZXN0b25lcyDCtyBwYXltZW50cyIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgImNyIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJjciI6IHsKICAgICAgICAiZW4iOiAiU2l0ZSBhbmQgdmVuZG9yIGNvbnRyYWN0cywgbWlsZXN0b25lcywgYnVkZ2V0cyBhbmQgdGltZWxpbmVzIiwKICAgICAgICAiaXQiOiAiQ29udHJhdHRpIGNvbiBjZW50cmkgZSBmb3JuaXRvcmksIHNjYWRlbnplLCBidWRnZXQgZSB0ZW1waXN0aWNoZSIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJPcGVyYXRpb25hbCB0cmFja2luZyBpbiBhQ2hpcmFsIENhcmJvbiAoQ1RNUykiLAogICAgICAgICJpdCI6ICJBdmFuemFtZW50byBkZWxsZSBhdHRpdml0w6AgdHJhY2NpYXRvIGluIGFDaGlyYWwgQ2FyYm9uIChDVE1TKSIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ2FyYm9uIChDVE1TKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIklDSC1HQ1AgRTYoUjMpIiwKICAgICAgIkdEUFIiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAicmVjcnVpdCIsCiAgICAiY2F0ZWdvcnkiOiAic3R1ZHkiLAogICAgInN1YiI6ICJwYXRpZW50cyIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJQYXRpZW50IHJlY3J1aXRtZW50ICYgcmV0ZW50aW9uIiwKICAgICAgIml0IjogIlJlY2x1dGFtZW50byBlIG1hbnRlbmltZW50byBkZWkgcGF6aWVudGkiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJSZWNydWl0bWVudCBzdHJhdGVneSDCtyArNDAlIHJldGVudGlvbiDCtyBlbmdhZ2VtZW50IiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgYnJpbmcgdGhlIHJpZ2h0IHBhdGllbnRzIGluIGFuZCBrZWVwIHRoZW0gZW5nYWdlZCB0byB0aGUgZW5kLiIsCiAgICAgICAgIml0IjogIlRyb3ZpYW1vIGkgcGF6aWVudGkgZ2l1c3RpIGUgbGkgbWFudGVuaWFtbyBjb2ludm9sdGkgZmlubyBhbGxhIGZpbmUuIgogICAgICB9LAogICAgICAidGVjaCI6ICJSZWNydWl0bWVudCBzdHJhdGVneSDCtyArNDAlIHJldGVudGlvbiDCtyBlbmdhZ2VtZW50IgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiY3IiLAogICAgICAiZGgiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFtdLAogICAgInJvbGVzIjogewogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIlJlY3J1aXRtZW50IGFuZCByZXRlbnRpb24gc3RyYXRlZ3kgKHVwIHRvICs0MCUgcmV0ZW50aW9uIGluIHRoZSBXZTQgbW9kZWwpIiwKICAgICAgICAiaXQiOiAiU3RyYXRlZ2lhIGRpIHJlY2x1dGFtZW50byBlIGRpIG1hbnRlbmltZW50byBkZWkgcGF6aWVudGkgbmVsbG8gc3R1ZGlvIChmaW5vIGFsIDQwJSBpbiBwacO5IGNvbiBpbCBtb2RlbGxvIFdlNCkiCiAgICAgIH0sCiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiUmVtaW5kZXJzLCBlRGlhcnkgYW5kIGRlZGljYXRlZCBjb250ZW50IHZpYSBhQ2hpcmFsIENvbnRlbnQsIENocm9ub3MgYW5kIENvbXBhY3QiLAogICAgICAgICJpdCI6ICJQcm9tZW1vcmlhLCBkaWFyaW8gZWxldHRyb25pY28gZSBjb250ZW51dGkgZGVkaWNhdGkgY29uIGFDaGlyYWwgQ29udGVudCwgQ2hyb25vcyBlIENvbXBhY3QiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENvbnRlbnQgKGVuZ2FnZW1lbnQpIiwKICAgICAgImFDaGlyYWwgQ2hyb25vcyAoZm9sbG93LXVwKSIsCiAgICAgICJhQ2hpcmFsIENvbXBhY3QgKG1vYmlsZSkiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJHRFBSIiwKICAgICAgIklDSC1HQ1AgRTYoUjMpIgogICAgXQogIH0sCiAgewogICAgImlkIjogImVjb25zZW50IiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogInBhdGllbnRzIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIkVsZWN0cm9uaWMgaW5mb3JtZWQgY29uc2VudCIsCiAgICAgICJpdCI6ICJDb25zZW5zbyBpbmZvcm1hdG8gZWxldHRyb25pY28iCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJlQ29uc2VudCDCtyBpZGVudGl0eSBwcm9vZmluZyDCtyAyMSBDRlIgUGFydCAxMSIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIlBhdGllbnRzIHNpZ24gdGhlaXIgY29uc2VudCBkaWdpdGFsbHkg4oCUIHNlY3VyZWx5IGFuZCBmdWxseSB0cmFjZWFibGUuIiwKICAgICAgICAiaXQiOiAiSSBwYXppZW50aSBmaXJtYW5vIGlsIGNvbnNlbnNvIGluIGRpZ2l0YWxlLCBpbiBtb2RvIHNpY3VybyBlIHRyYWNjaWFiaWxlLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiZUNvbnNlbnQgwrcgaWRlbnRpdHkgcHJvb2ZpbmcgwrcgMjEgQ0ZSIFBhcnQgMTEiCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiY3IiLAogICAgICAicmVnIgogICAgXSwKICAgICJyb2xlcyI6IHsKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJlQ29uc2VudCB3aXRoIHRyYWNrZWQgc2lnbmF0dXJlIGFuZCBpZGVudGl0eSBwcm9vZmluZyAoYUNoaXJhbCBDYXB0dXJlKSIsCiAgICAgICAgIml0IjogImVDb25zZW50IGNvbiBmaXJtYSB0cmFjY2lhdGEgZSB2ZXJpZmljYSBkZWxs4oCZaWRlbnRpdMOgIChhQ2hpcmFsIENhcHR1cmUpIgogICAgICB9LAogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIkNvbnNlbnQgcHJvY2VzcyB3aXRoaW4gdGhlIHN0dWR5IGZsb3ciLAogICAgICAgICJpdCI6ICJQcm9jZXNzbyBkaSBjb25zZW5zbyBpbnRlZ3JhdG8gbmVsIGZsdXNzbyBkZWxsbyBzdHVkaW8iCiAgICAgIH0sCiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIjIxIENGUiBQYXJ0IDExIC8gZUlEQVMgY29uZm9ybWFuY2UiLAogICAgICAgICJpdCI6ICJDb25mb3JtaXTDoCAyMSBDRlIgUGFydCAxMSAvIGVJREFTIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiMjEgQ0ZSIFBhcnQgMTEiLAogICAgICAiZUlEQVMiLAogICAgICAiR0RQUiIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJlcHJvIiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogInBhdGllbnRzIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIlBhdGllbnQtcmVwb3J0ZWQgb3V0Y29tZXMgKGVQUk8vZUNPQSkiLAogICAgICAiaXQiOiAiRXNpdGkgcmlmZXJpdGkgZGFsIHBhemllbnRlIChlUFJPL2VDT0EpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiZVBSTyDCtyBlQ09BIMK3IGVEaWFyeSDCtyBjYXJlZ2l2ZXIgd29ya2Zsb3ciLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJQYXRpZW50cyByZXBvcnQgc3ltcHRvbXMsIHF1YWxpdHkgb2YgbGlmZSBhbmQgYWRoZXJlbmNlIGZyb20gdGhlaXIgcGhvbmUuIiwKICAgICAgICAiaXQiOiAiSSBwYXppZW50aSBzZWduYWxhbm8gc2ludG9taSwgcXVhbGl0w6AgZGkgdml0YSBlIGFkZXJlbnphIGFsbGEgdGVyYXBpYSBkYWwgcHJvcHJpbyBzbWFydHBob25lLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiZVBSTyDCtyBlQ09BIMK3IGVEaWFyeSDCtyBjYXJlZ2l2ZXIgd29ya2Zsb3ciCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiY3IiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogImVQUk8vZURpYXJ5IHZpYSBhQ2hpcmFsIENhcHR1cmUgYW5kIENvbXBhY3QsIHdpdGggbWlzc2VkLWVudHJ5IHRyYWNraW5nIiwKICAgICAgICAiaXQiOiAiZVBSTyBlIGRpYXJpbyBlbGV0dHJvbmljbyBjb24gYUNoaXJhbCBDYXB0dXJlIGUgQ29tcGFjdCwgY29uIGNvbnRyb2xsbyBkZWxsZSBjb21waWxhemlvbmkgbWFuY2F0ZSIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJQYXRpZW50LXJlcG9ydGVkIG91dGNvbWVzIGludGVncmF0ZWQgaW50byB0aGUgZGF0YXNldCIsCiAgICAgICAgIml0IjogIkVzaXRpIHJpZmVyaXRpIGRhbCBwYXppZW50ZSBpbnRlZ3JhdGkgbmVsIGRhdGFzZXQiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENhcHR1cmUgKEVEQykiLAogICAgICAiYUNoaXJhbCBDb21wYWN0IChtb2JpbGUpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiMjEgQ0ZSIFBhcnQgMTEiLAogICAgICAiQUxDT0ErIiwKICAgICAgIkdEUFIiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiZWRjIiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogImRhdGEiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiRWxlY3Ryb25pYyBEYXRhIENhcHR1cmUgKEVEQy9lQ1JGKSIsCiAgICAgICJpdCI6ICJSYWNjb2x0YSBkYXRpIGVsZXR0cm9uaWNhIChFREMvZUNSRikiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJFREMgwrcgZUNSRiDCtyByYW5kb21pemF0aW9uIMK3IGF1ZGl0IHRyYWlsIMK3IENESVNDIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgY29sbGVjdCBzdHVkeSBkYXRhIGVsZWN0cm9uaWNhbGx5IOKAlCBjbGVhbiwgc3RydWN0dXJlZCBhbmQgaW5zcGVjdGlvbi1yZWFkeS4iLAogICAgICAgICJpdCI6ICJSYWNjb2dsaWFtbyBpIGRhdGkgZGVsbG8gc3R1ZGlvIGluIGZvcm1hdG8gZWxldHRyb25pY286IHB1bGl0aSwgc3RydXR0dXJhdGkgZSBwcm9udGkgcGVyIGxlIGlzcGV6aW9uaS4iCiAgICAgIH0sCiAgICAgICJ0ZWNoIjogIkVEQyDCtyBlQ1JGIMK3IHJhbmRvbWl6YXRpb24gwrcgYXVkaXQgdHJhaWwgwrcgQ0RJU0MiCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiY3IiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogImFDaGlyYWwgQ2FwdHVyZTogbm8tY29kZSBFREMgd2l0aCBlQ1JGLCByYW5kb21pemF0aW9uLCBxdWVyeSBtYW5hZ2VtZW50IGFuZCBBTENPQSsgYXVkaXQgdHJhaWwiLAogICAgICAgICJpdCI6ICJhQ2hpcmFsIENhcHR1cmU6IEVEQyBuby1jb2RlIGNvbiBlQ1JGLCByYW5kb21penphemlvbmUsIGdlc3Rpb25lIHF1ZXJ5IGUgYXVkaXQgdHJhaWwgQUxDT0ErIgogICAgICB9LAogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIkRhdGEgbWFuYWdlbWVudCBhbmQgcXVhbGl0eSBvdmVyc2lnaHQiLAogICAgICAgICJpdCI6ICJHZXN0aW9uZSBkZWkgZGF0aSBlIGNvbnRyb2xsbyBkZWxsYSBxdWFsaXTDoCIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ2FwdHVyZSAoRURDKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIjIxIENGUiBQYXJ0IDExIiwKICAgICAgIkVVIEFubmV4IDExIiwKICAgICAgIkFMQ09BKyIsCiAgICAgICJDRElTQyBTRFRNL0FEYU0iCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAibW9uaXRvciIsCiAgICAiY2F0ZWdvcnkiOiAic3R1ZHkiLAogICAgInN1YiI6ICJkYXRhIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIlN0dWR5IG1vbml0b3JpbmcgKHJlbW90ZSAmIG9uLXNpdGUpIiwKICAgICAgIml0IjogIk1vbml0b3JhZ2dpbyBkZWxsbyBzdHVkaW8gKHJlbW90byBlIG9uLXNpdGUpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiclNEViDCtyByaXNrLWJhc2VkIG1vbml0b3JpbmcgKFJCTSkgwrcgcXVlcnkgbWFuYWdlbWVudCIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIldlIGNoZWNrIGRhdGEgcXVhbGl0eSBhbmQgaG93IHNpdGVzIHJ1biB0aGUgc3R1ZHksIHJlbW90ZWx5IGFuZCBvbi1zaXRlLiIsCiAgICAgICAgIml0IjogIlZlcmlmaWNoaWFtbyBsYSBxdWFsaXTDoCBkZWkgZGF0aSBlIGxhIGNvbmR1emlvbmUgZGVsbG8gc3R1ZGlvIG5laSBjZW50cmksIGRhIHJlbW90byBlIGluIHNlZGUuIgogICAgICB9LAogICAgICAidGVjaCI6ICJyU0RWIMK3IHJpc2stYmFzZWQgbW9uaXRvcmluZyAoUkJNKSDCtyBxdWVyeSBtYW5hZ2VtZW50IgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiY3IiLAogICAgICAiZGgiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFtdLAogICAgInJvbGVzIjogewogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIlJpc2stQmFzZWQgTW9uaXRvcmluZzogbW9uaXRvcmluZyBwbGFuLCByZW1vdGUgU0RWIGFuZCBxdWVyeSBtYW5hZ2VtZW50IiwKICAgICAgICAiaXQiOiAiTW9uaXRvcmFnZ2lvIGJhc2F0byBzdWwgcmlzY2hpbzogcGlhbm8gZGkgbW9uaXRvcmFnZ2lvLCB2ZXJpZmljYSBkZWkgZGF0aSBzb3JnZW50ZSBkYSByZW1vdG8gZSBnZXN0aW9uZSBkZWxsZSBxdWVyeSIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJhQ2hpcmFsIENsZWFyOiByZW1vdGUgc291cmNlLWRhdGEgdmVyaWZpY2F0aW9uIGluIHJlYWwtdGltZSBzeW5jIHdpdGggQ2FyYm9uIiwKICAgICAgICAiaXQiOiAiYUNoaXJhbCBDbGVhcjogdmVyaWZpY2EgZGVpIGRhdGkgc29yZ2VudGUgZGEgcmVtb3RvLCBzaW5jcm9uaXp6YXRhIGluIHRlbXBvIHJlYWxlIGNvbiBhQ2hpcmFsIENhcmJvbiIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ2xlYXIgKHJlbW90ZSBtb25pdG9yaW5nKSIsCiAgICAgICJhQ2hpcmFsIENhcmJvbiAoQ1RNUykiLAogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiSUNILUdDUCBFNihSMykiLAogICAgICAiMjEgQ0ZSIFBhcnQgMTEiLAogICAgICAiQUxDT0ErIgogICAgXQogIH0sCiAgewogICAgImlkIjogImRhdGFxdWFsaXR5IiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogImRhdGEiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiRGF0YSBtYW5hZ2VtZW50ICYgaW50ZWdyaXR5IChBTENPQSspIiwKICAgICAgIml0IjogIkdlc3Rpb25lIGUgaW50ZWdyaXTDoCBkZWkgZGF0aSAoQUxDT0ErKSIKICAgIH0sCiAgICAibGFiZWxUZWNoIjogIkRhdGEgbWFuYWdlbWVudCDCtyBBTENPQSsgwrcgYXVkaXQgdHJhaWwgwrcgZ292ZXJuYW5jZSIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIldlIGtlZXAgeW91ciBkYXRhIGNsZWFuLCBjb21wbGV0ZSBhbmQgaW5zcGVjdGlvbi1wcm9vZiB0aHJvdWdoIHRoZSB3aG9sZSBzdHVkeS4iLAogICAgICAgICJpdCI6ICJNYW50ZW5pYW1vIGkgZGF0aSBwdWxpdGksIGNvbXBsZXRpIGUgYSBwcm92YSBkaSBpc3BlemlvbmUgcGVyIHR1dHRvIGxvIHN0dWRpby4iCiAgICAgIH0sCiAgICAgICJ0ZWNoIjogIkRhdGEgbWFuYWdlbWVudCDCtyBBTENPQSsgwrcgYXVkaXQgdHJhaWwgwrcgZ292ZXJuYW5jZSIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgImNyIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJkaCIsCiAgICAgICJyZWciCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIkRhdGEgbWFuYWdlbWVudCBhbmQgaW50ZWdyaXR5IGdvdmVybmFuY2UgYWNyb3NzIHRoZSBzdHVkeSBsaWZlY3ljbGUiLAogICAgICAgICJpdCI6ICJHZXN0aW9uZSBkZWkgZGF0aSBlIGNvbnRyb2xsbyBkZWxsYSBsb3JvIGludGVncml0w6AgcGVyIHR1dHRhIGxhIGR1cmF0YSBkZWxsbyBzdHVkaW8iCiAgICAgIH0sCiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiRWRpdC1jaGVja3MsIHZlcnNpb25pbmcgYW5kIGEgdGFtcGVyLWV2aWRlbnQgYXVkaXQgdHJhaWwgaW4gYUNoaXJhbCBDYXB0dXJlIiwKICAgICAgICAiaXQiOiAiQ29udHJvbGxpIGRpIGNvZXJlbnphLCBnZXN0aW9uZSBkZWxsZSB2ZXJzaW9uaSBlIGF1ZGl0IHRyYWlsIGEgcHJvdmEgZGkgbWFub21pc3Npb25lIGluIGFDaGlyYWwgQ2FwdHVyZSIKICAgICAgfSwKICAgICAgInJlZyI6IHsKICAgICAgICAiZW4iOiAiQ29uZm9ybWFuY2UgdG8gQUxDT0ErIGFuZCBBbm5leCAxMSIsCiAgICAgICAgIml0IjogIkNvbmZvcm1pdMOgIGFpIHByaW5jaXBpIEFMQ09BKyBlIGFsbOKAmUFubmV4IDExIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIiwKICAgICAgImFDaGlyYWwgQ29iYWx0IChlUU1TL2VUTUYpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiQUxDT0ErIiwKICAgICAgIjIxIENGUiBQYXJ0IDExIiwKICAgICAgIkVVIEFubmV4IDExIgogICAgXQogIH0sCiAgewogICAgImlkIjogInN0YXRzIiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogImRhdGEiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiQmlvc3RhdGlzdGljcyAmIHJlcG9ydGluZyIsCiAgICAgICJpdCI6ICJCaW9zdGF0aXN0aWNhIGUgcmVwb3J0aXN0aWNhIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiQmlvc3RhdGlzdGljcyDCtyBDRElTQyDCtyBhdXRvbWF0ZWQgcmVwb3J0aW5nIMK3IEFJIHNjb3JpbmciLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSBhbmFseXNlIHRoZSBkYXRhIGFuZCB0dXJuIGl0IGludG8gcmVzdWx0cyDigJQgd2l0aCBBSS1hc3Npc3RlZCBhbmFseXRpY3MgaW4gc3VwcG9ydC4iLAogICAgICAgICJpdCI6ICJBbmFsaXp6aWFtbyBpIGRhdGkgZSBsaSB0cmFzZm9ybWlhbW8gaW4gcmlzdWx0YXRpLCBjb24gaWwgc3VwcG9ydG8gZGkgYW5hbGlzaSBiYXNhdGUgc3VsbOKAmUFJLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiQmlvc3RhdGlzdGljcyDCtyBDRElTQyDCtyBhdXRvbWF0ZWQgcmVwb3J0aW5nIMK3IEFJIHNjb3JpbmciCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJjciIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIlN0YXRpc3RpY2FsIGFuYWx5c2lzIGFuZCByZXBvcnRpbmcsIHdpdGggQUktYXNzaXN0ZWQgc2NvcmluZyBhbmQgYW5hbHl0aWNzIGluIHN1cHBvcnQiLAogICAgICAgICJpdCI6ICJBbmFsaXNpIHN0YXRpc3RpY2EgZSByZXBvcnRpc3RpY2EsIGNvbiBpbCBzdXBwb3J0byBkaSBwdW50ZWdnaSBlIGFuYWxpc2kgYmFzYXRpIHN1bGzigJlBSSIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJPbmUtY2xpY2sgQ0RJU0MgU0RUTS9BRGFNIGV4cG9ydCBmcm9tIGFDaGlyYWwgQ2FwdHVyZSIsCiAgICAgICAgIml0IjogIkVzcG9ydGF6aW9uZSBDRElTQyBTRFRNL0FEYU0gaW4gdW4gY2xpYyBkYSBhQ2hpcmFsIENhcHR1cmUiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENhcHR1cmUgKEVEQykiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJDRElTQyBTRFRNL0FEYU0iLAogICAgICAiSUNILUdDUCBFNihSMykiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAicHYiLAogICAgImNhdGVnb3J5IjogInN0dWR5IiwKICAgICJzdWIiOiAic2FmZXR5IiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIlBoYXJtYWNvdmlnaWxhbmNlICYgc2FmZXR5IiwKICAgICAgIml0IjogIkZhcm1hY292aWdpbGFuemEgZSBzaWN1cmV6emEiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJBReKGklNBRSBhdXRvLWNsYXNzaWZpY2F0aW9uIMK3IE1lZERSQSDCtyBTVVNBUiDCtyBNSVIiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSBjb2xsZWN0LCBjbGFzc2lmeSBhbmQgcmVwb3J0IGFkdmVyc2UgZXZlbnRzIChBRS9TQUUpIHRocm91Z2hvdXQgdGhlIHN0dWR5LiIsCiAgICAgICAgIml0IjogIlJhY2NvZ2xpYW1vLCBjbGFzc2lmaWNoaWFtbyBlIHNlZ25hbGlhbW8gZ2xpIGV2ZW50aSBhdnZlcnNpIChBRS9TQUUpIGR1cmFudGUgdHV0dG8gbG8gc3R1ZGlvLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiQUXihpJTQUUgYXV0by1jbGFzc2lmaWNhdGlvbiDCtyBNZWREUkEgwrcgU1VTQVIgwrcgTUlSIgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiY3IiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFsKICAgICAgImRoIgogICAgXSwKICAgICJyb2xlcyI6IHsKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJDb2xsZWN0aW9uLCBjbGFzc2lmaWNhdGlvbiBhbmQgcmVwb3J0aW5nIG9mIGFkdmVyc2UgZXZlbnRzIGFuZCBzYWZldHkgc2lnbmFscyIsCiAgICAgICAgIml0IjogIlJhY2NvbHRhLCBjbGFzc2lmaWNhemlvbmUgZSBzZWduYWxhemlvbmUgZGkgZXZlbnRpIGF2dmVyc2kgZSBzZWduYWxpIGRpIHNpY3VyZXp6YSIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJBReKGklNBRSBhdXRvLWNsYXNzaWZpY2F0aW9uIGVuZ2luZSBpbiBhQ2hpcmFsIENhcHR1cmUiLAogICAgICAgICJpdCI6ICJNb3RvcmUgZGkgY2xhc3NpZmljYXppb25lIGF1dG9tYXRpY2EgQUXihpJTQUUgaW4gYUNoaXJhbCBDYXB0dXJlIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiSUNILUdDUCBFNihSMykiLAogICAgICAiRVUgQ1RSIDUzNi8yMDE0IiwKICAgICAgIk1lZERSQSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJkY3QiLAogICAgImNhdGVnb3J5IjogInN0dWR5IiwKICAgICJzdWIiOiAibW9kZWxzIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIkRlY2VudHJhbGl6ZWQgLyBoeWJyaWQgdHJpYWxzIChEQ1QpIiwKICAgICAgIml0IjogIlN0dWRpIGRlY2VudHJhbGl6emF0aSAvIGlicmlkaSAoRENUKSIKICAgIH0sCiAgICAibGFiZWxUZWNoIjogIkRDVCDCtyBoeWJyaWQgdHJpYWwgwrcgcmVtb3RlIGVucm9sbWVudCDCtyBlUFJPLWRyaXZlbiIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIlRoZSBzdHVkeSBjb21lcyB0byB0aGUgcGF0aWVudDogcmVtb3RlIHZpc2l0cywgZS1jb25zZW50IGFuZCBkYXRhIGNhcHR1cmVkIGF0IGhvbWUuIiwKICAgICAgICAiaXQiOiAiw4ggbG8gc3R1ZGlvIGFkIGFuZGFyZSBkYWwgcGF6aWVudGU6IHZpc2l0ZSBkYSByZW1vdG8sIGNvbnNlbnNvIGVsZXR0cm9uaWNvIGUgZGF0aSByYWNjb2x0aSBhIGNhc2EuIgogICAgICB9LAogICAgICAidGVjaCI6ICJEQ1QgwrcgaHlicmlkIHRyaWFsIMK3IHJlbW90ZSBlbnJvbG1lbnQgwrcgZVBSTy1kcml2ZW4iCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJjciIsCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAicmVnIgogICAgXSwKICAgICJyb2xlcyI6IHsKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJPcGVyYXRpb25hbCBzZXR1cCBvZiB0aGUgZGVjZW50cmFsaXplZCBvciBoeWJyaWQgdHJpYWwiLAogICAgICAgICJpdCI6ICJPcmdhbml6emF6aW9uZSBvcGVyYXRpdmEgZGVsbG8gc3R1ZGlvIGRlY2VudHJhbGl6emF0byBvIGlicmlkbyIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJSZW1vdGUgZW5yb2xtZW50LCBlQ29uc2VudCBhbmQgdmlzaXRzIHZpYSBhQ2hpcmFsIENvbXBhY3QsIENvbm5lY3QsIENhcHR1cmUgYW5kIENsZWFyIiwKICAgICAgICAiaXQiOiAiQXJydW9sYW1lbnRvLCBjb25zZW5zbyBlbGV0dHJvbmljbyBlIHZpc2l0ZSBkYSByZW1vdG8gY29uIGFDaGlyYWwgQ29tcGFjdCwgQ29ubmVjdCwgQ2FwdHVyZSBlIENsZWFyIgogICAgICB9LAogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJBbGlnbm1lbnQgd2l0aCBEQ1QgYW5kIHJlbW90ZS1jb25zZW50IGd1aWRhbmNlIiwKICAgICAgICAiaXQiOiAiQWxsaW5lYW1lbnRvIGFsbGUgbGluZWUgZ3VpZGEgc3UgRENUIGUgY29uc2Vuc28gZGEgcmVtb3RvIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDb21wYWN0IChtb2JpbGUpIiwKICAgICAgImFDaGlyYWwgQ29ubmVjdCAodGVsZW1lZGljaW5lL0hJUykiLAogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIiwKICAgICAgImFDaGlyYWwgQ2xlYXIgKHJlbW90ZSBtb25pdG9yaW5nKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIklDSC1HQ1AgRTYoUjMpIiwKICAgICAgIkdEUFIiLAogICAgICAiMjEgQ0ZSIFBhcnQgMTEiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAicndlIiwKICAgICJjYXRlZ29yeSI6ICJzdHVkeSIsCiAgICAic3ViIjogIm1vZGVscyIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJSZWFsLXdvcmxkIGV2aWRlbmNlICYgcmVnaXN0cmllcyIsCiAgICAgICJpdCI6ICJFdmlkZW56ZSByZWFsLXdvcmxkIGUgcmVnaXN0cmkiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJSV0UgwrcgcmVnaXN0cmllcyDCtyBvYnNlcnZhdGlvbmFsIHN0dWRpZXMgwrcgUldEIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgYnVpbGQgcmVnaXN0cmllcyBhbmQgZ2VuZXJhdGUgZXZpZGVuY2UgZnJvbSByZWFsLXdvcmxkIGFuZCBwb3N0LW1hcmtldCBkYXRhLiIsCiAgICAgICAgIml0IjogIkNvc3RydWlhbW8gcmVnaXN0cmkgZSBnZW5lcmlhbW8gZXZpZGVuemUgZGEgZGF0aSByZWFsLXdvcmxkIGUgcG9zdC1tYXJrZXQuIgogICAgICB9LAogICAgICAidGVjaCI6ICJSV0UgwrcgcmVnaXN0cmllcyDCtyBvYnNlcnZhdGlvbmFsIHN0dWRpZXMgwrcgUldEIgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiY3IiLAogICAgICAiZGgiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFsKICAgICAgInJlZyIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJjciI6IHsKICAgICAgICAiZW4iOiAiRGVzaWduIGFuZCBjb25kdWN0IG9mIHJlZ2lzdHJpZXMgYW5kIG9ic2VydmF0aW9uYWwgc3R1ZGllcyIsCiAgICAgICAgIml0IjogIkRpc2Vnbm8gZSBjb25kdXppb25lIGRpIHJlZ2lzdHJpIGUgc3R1ZGkgb3NzZXJ2YXppb25hbGkiCiAgICAgIH0sCiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiUmVhbC13b3JsZCBkYXRhIGNhcHR1cmUgdmlhIGFDaGlyYWwgcGxhdGZvcm1zIiwKICAgICAgICAiaXQiOiAiUmFjY29sdGEgZGkgZGF0aSByZWFsLXdvcmxkIGNvbiBsZSBwaWF0dGFmb3JtZSBhQ2hpcmFsIgogICAgICB9LAogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJVc2Ugb2YgUldFIGZvciByZWd1bGF0b3J5IGFuZCBwb3N0LW1hcmtldCBwdXJwb3NlcyIsCiAgICAgICAgIml0IjogIlVzbyBkZWxsZSBldmlkZW56ZSByZWFsLXdvcmxkIGEgZmluaSByZWdvbGF0b3JpIGUgcG9zdC1jb21tZXJjaWFsaXp6YXppb25lIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDb25uZWN0ICh0ZWxlbWVkaWNpbmUvSElTKSIsCiAgICAgICJhQ2hpcmFsIENvbXBhY3QgKG1vYmlsZSkiLAogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiR0RQUiIsCiAgICAgICJJU08gMTQxNTUiLAogICAgICAiTURSIFBNQ0YiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAicmVnc3RyYXRlZ3kiLAogICAgImNhdGVnb3J5IjogIm1hcmtldCIsCiAgICAic3ViIjogInN0cmF0ZWd5IiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIlJlZ3VsYXRvcnkgc3RyYXRlZ3kgJiBjbGFzc2lmaWNhdGlvbiIsCiAgICAgICJpdCI6ICJTdHJhdGVnaWEgcmVnb2xhdG9yaWEgZSBjbGFzc2lmaWNhemlvbmUiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJSZWd1bGF0b3J5IHN0cmF0ZWd5IMK3IHByb2R1Y3QgY2xhc3NpZmljYXRpb24gwrcgZ2FwIGFuYWx5c2lzIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgbWFwIHRoZSBmYXN0ZXN0IGNvbXBsaWFudCByb3V0ZSB0byBtYXJrZXQgYW5kIGNsYXNzaWZ5IHlvdXIgcHJvZHVjdC4iLAogICAgICAgICJpdCI6ICJJbmRpdmlkdWlhbW8gaWwgcGVyY29yc28gcGnDuSByYXBpZG8gZSBjb25mb3JtZSBwZXIgYXJyaXZhcmUgc3VsIG1lcmNhdG8gZSBjbGFzc2lmaWNoaWFtbyBpbCB0dW8gcHJvZG90dG8uIgogICAgICB9LAogICAgICAidGVjaCI6ICJSZWd1bGF0b3J5IHN0cmF0ZWd5IMK3IHByb2R1Y3QgY2xhc3NpZmljYXRpb24gwrcgZ2FwIGFuYWx5c2lzIgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAicmVnIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJjciIsCiAgICAgICJkaCIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIlJlZ3VsYXRvcnkgc3RyYXRlZ3ksIHByb2R1Y3QgY2xhc3NpZmljYXRpb24gYW5kIHJvYWRtYXAgdG8gbWFya2V0IiwKICAgICAgICAiaXQiOiAiU3RyYXRlZ2lhIHJlZ29sYXRvcmlhLCBjbGFzc2lmaWNhemlvbmUgZGVsIHByb2RvdHRvIGUgcGlhbm8gZGkgYWNjZXNzbyBhbCBtZXJjYXRvIgogICAgICB9LAogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIkNsaW5pY2FsIGV2aWRlbmNlIHJlcXVpcmVtZW50cyIsCiAgICAgICAgIml0IjogIlJlcXVpc2l0aSBkaSBldmlkZW56YSBjbGluaWNhIgogICAgICB9LAogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogIlF1YWxpdHkvdGVjaG5pY2FsIGV2aWRlbmNlIHJlYWRpbmVzcyIsCiAgICAgICAgIml0IjogIlByZXBhcmF6aW9uZSBkZWxsZSBldmlkZW56ZSB0ZWNuaWNoZSBlIGRpIHF1YWxpdMOgIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDb2JhbHQgKGVRTVMvZVRNRikiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJFVSBNRFIvSVZEUiIsCiAgICAgICJJU08gMTM0ODUiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAic2FtZCIsCiAgICAiY2F0ZWdvcnkiOiAibWFya2V0IiwKICAgICJzdWIiOiAic3RyYXRlZ3kiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiU29mdHdhcmUgYXMgYSBNZWRpY2FsIERldmljZSAoU2FNRCkiLAogICAgICAiaXQiOiAiU29mdHdhcmUgY29tZSBkaXNwb3NpdGl2byBtZWRpY28gKFNhTUQpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiU2FNRCDCtyBJRUMgNjIzMDQgwrcgSUVDIDgyMzA0LTEgwrcgY3liZXJzZWN1cml0eSIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIldlIGNsYXNzaWZ5IGFuZCBjZXJ0aWZ5IHlvdXIgc29mdHdhcmUgYXMgYSBtZWRpY2FsIGRldmljZS4iLAogICAgICAgICJpdCI6ICJDbGFzc2lmaWNoaWFtbyBlIGNlcnRpZmljaGlhbW8gaWwgdHVvIHNvZnR3YXJlIGNvbWUgZGlzcG9zaXRpdm8gbWVkaWNvLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiU2FNRCDCtyBJRUMgNjIzMDQgwrcgSUVDIDgyMzA0LTEgwrcgY3liZXJzZWN1cml0eSIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgInJlZyIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJTYU1EIGNsYXNzaWZpY2F0aW9uIGFuZCBJRUMgNjIzMDQgLyBJRUMgODIzMDQtMSBjb25mb3JtYW5jZSwgY3liZXJzZWN1cml0eSBpbmNsdWRlZCIsCiAgICAgICAgIml0IjogIkNsYXNzaWZpY2F6aW9uZSBkZWwgc29mdHdhcmUgY29tZSBkaXNwb3NpdGl2byBtZWRpY28gZSBjb25mb3JtaXTDoCBJRUMgNjIzMDQgLyBJRUMgODIzMDQtMSwgY3liZXJzaWN1cmV6emEgaW5jbHVzYSIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJTb2Z0d2FyZSBsaWZlY3ljbGUgYW5kIElFQyA2MjMwNCBkb2N1bWVudGF0aW9uIGluIGFDaGlyYWwgQ29iYWx0IiwKICAgICAgICAiaXQiOiAiQ2ljbG8gZGkgdml0YSBkZWwgc29mdHdhcmUgZSBkb2N1bWVudGF6aW9uZSBJRUMgNjIzMDQgaW4gYUNoaXJhbCBDb2JhbHQiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENvYmFsdCAoZVFNUy9lVE1GKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIklFQyA2MjMwNCIsCiAgICAgICJJRUMgODIzMDQtMSIsCiAgICAgICJJU08gMTQ5NzEiLAogICAgICAiRVUgTURSIgogICAgXQogIH0sCiAgewogICAgImlkIjogImFpYWN0IiwKICAgICJjYXRlZ29yeSI6ICJtYXJrZXQiLAogICAgInN1YiI6ICJzdHJhdGVneSIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJBSSBjb21wbGlhbmNlIChFVSBBSSBBY3QpIiwKICAgICAgIml0IjogIkNvbmZvcm1pdMOgIGFsbOKAmUFJIEFjdCAoVUUpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiRVUgQUkgQWN0IMK3IG1vZGVsIGxpZmVjeWNsZSBnb3Zlcm5hbmNlIMK3IGludGVuZGVkIHVzZSIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIldlIG1ha2UgeW91ciBBSSBwcm9kdWN0IGNvbXBsaWFudCDigJQgZ292ZXJuZWQsIGRvY3VtZW50ZWQsIG5vIGJsYWNrIGJveC4iLAogICAgICAgICJpdCI6ICJSZW5kaWFtbyBjb25mb3JtZSBpbCB0dW8gcHJvZG90dG8gYmFzYXRvIHN1bGzigJlBSTogY29udHJvbGxhdG8sIGRvY3VtZW50YXRvIGUgdHJhc3BhcmVudGUuIgogICAgICB9LAogICAgICAidGVjaCI6ICJFVSBBSSBBY3QgwrcgbW9kZWwgbGlmZWN5Y2xlIGdvdmVybmFuY2UgwrcgaW50ZW5kZWQgdXNlIgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAicmVnIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJkaCIsCiAgICAgICJjciIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIkFJIEFjdCBzdHJhdGVneTogZ292ZXJuYW5jZSBvZiB0cmFpbmluZyBkYXRhLCBsaWZlY3ljbGUgYW5kIG1vZGVsIHVwZGF0ZXMiLAogICAgICAgICJpdCI6ICJTdHJhdGVnaWEgcGVyIGzigJlBSSBBY3Q6IGdlc3Rpb25lIGRlaSBkYXRpIGRpIGFkZGVzdHJhbWVudG8sIGRlbCBjaWNsbyBkaSB2aXRhIGUgZGVnbGkgYWdnaW9ybmFtZW50aSBkZWwgbW9kZWxsbyIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJWYWxpZGF0ZWQgQUktcmVhZHkgcGlwZWxpbmVzIGFuZCBjbGluaWNhbC9kZXJpdmVkL2luc2lnaHQgZGF0YSBzZXBhcmF0aW9uIiwKICAgICAgICAiaXQiOiAiRmx1c3NpIGRpIGRhdGkgY29udmFsaWRhdGkgZSBwcm9udGkgcGVyIGzigJlBSSwgY29uIGRhdGkgY2xpbmljaSwgZGF0aSBkZXJpdmF0aSBlIHJpc3VsdGF0aSBkZWxsZSBhbmFsaXNpIHRlbnV0aSBzZXBhcmF0aSIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJDbGluaWNhbCB2YWxpZGF0aW9uIG9mIG1vZGVscyBhcyBkZWNpc2lvbi1zdXBwb3J0LCB3aXRoIGh1bWFuIG92ZXJzaWdodCIsCiAgICAgICAgIml0IjogIkNvbnZhbGlkYSBjbGluaWNhIGRlaSBtb2RlbGxpIGNvbWUgc3VwcG9ydG8gYWxsZSBkZWNpc2lvbmksIGNvbiBzdXBlcnZpc2lvbmUgdW1hbmEiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENhdGlvbiAoQUkgY2hhdGJvdCkiLAogICAgICAiYUNoaXJhbCBDb2JhbHQgKGVRTVMvZVRNRikiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJFVSBBSSBBY3QiLAogICAgICAiR0FNUCA1IiwKICAgICAgIklTTyAxNDk3MSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJjZW1hcmtpbmciLAogICAgImNhdGVnb3J5IjogIm1hcmtldCIsCiAgICAic3ViIjogImNlcnQiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiQ0UgbWFya2luZyAoTURSL0lWRFIpIiwKICAgICAgIml0IjogIk1hcmNhdHVyYSBDRSAoTURSL0lWRFIpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiQ0UgbWFya2luZyDCtyBNRFIgMjAxNy83NDUgwrcgSVZEUiAyMDE3Lzc0NiDCtyBOb3RpZmllZCBCb2R5IiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgdGFrZSB5b3VyIGRldmljZSB0aHJvdWdoIENFIG1hcmtpbmcgYW5kIHRoZSBOb3RpZmllZCBCb2R5LiIsCiAgICAgICAgIml0IjogIkFjY29tcGFnbmlhbW8gaWwgdHVvIGRpc3Bvc2l0aXZvIGluIHR1dHRvIGlsIHBlcmNvcnNvIGRpIG1hcmNhdHVyYSBDRSwgZmlubyBhbGzigJlPcmdhbmlzbW8gTm90aWZpY2F0by4iCiAgICAgIH0sCiAgICAgICJ0ZWNoIjogIkNFIG1hcmtpbmcgwrcgTURSIDIwMTcvNzQ1IMK3IElWRFIgMjAxNy83NDYgwrcgTm90aWZpZWQgQm9keSIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgInJlZyIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiY3IiLAogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJTdHJhdGVneSBhbmQgZG9zc2llciBmb3IgQ0UgbWFya2luZywgTm90aWZpZWQgQm9keSBpbnRlcmFjdGlvbiIsCiAgICAgICAgIml0IjogIlN0cmF0ZWdpYSBlIGRvc3NpZXIgcGVyIGxhIG1hcmNhdHVyYSBDRSwgcmFwcG9ydGkgY29uIGzigJlPcmdhbmlzbW8gTm90aWZpY2F0byIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJJU08gMTQxNTUgY2xpbmljYWwgaW52ZXN0aWdhdGlvbiBmb3IgY2xpbmljYWwgZXZpZGVuY2UiLAogICAgICAgICJpdCI6ICJJbmRhZ2luZSBjbGluaWNhIHNlY29uZG8gbGEgSVNPIDE0MTU1IHBlciBnZW5lcmFyZSBs4oCZZXZpZGVuemEgY2xpbmljYSIKICAgICAgfSwKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJRdWFsaXR5IGV2aWRlbmNlIGFuZCB0cmFjZWFiaWxpdHkgbWF0cml4IGZyb20gYUNoaXJhbCBDb2JhbHQiLAogICAgICAgICJpdCI6ICJFdmlkZW56ZSBkaSBxdWFsaXTDoCBlIG1hdHJpY2UgZGkgdHJhY2NpYWJpbGl0w6AgZGEgYUNoaXJhbCBDb2JhbHQiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENvYmFsdCAoZVFNUy9lVE1GKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIkVVIE1EUiAyMDE3Lzc0NSIsCiAgICAgICJFVSBJVkRSIDIwMTcvNzQ2IiwKICAgICAgIklTTyAxMzQ4NSIsCiAgICAgICJJU08gMTQ5NzEiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiY2xpbmV2YWwiLAogICAgImNhdGVnb3J5IjogIm1hcmtldCIsCiAgICAic3ViIjogImNlcnQiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiQ2xpbmljYWwgZXZhbHVhdGlvbiAmIGludmVzdGlnYXRpb24iLAogICAgICAiaXQiOiAiVmFsdXRhemlvbmUgZSBpbmRhZ2luZSBjbGluaWNhIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiQ0VSIMK3IGNsaW5pY2FsIGludmVzdGlnYXRpb24gwrcgSVNPIDE0MTU1IiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgYnVpbGQgdGhlIGNsaW5pY2FsIGV2aWRlbmNlIHlvdXIgZGV2aWNlIG5lZWRzLCBmcm9tIGxpdGVyYXR1cmUgdG8gb24tZGV2aWNlIHN0dWRpZXMuIiwKICAgICAgICAiaXQiOiAiQ29zdHJ1aWFtbyBs4oCZZXZpZGVuemEgY2xpbmljYSBkaSBjdWkgaWwgdHVvIGRpc3Bvc2l0aXZvIGhhIGJpc29nbm8sIGRhbGxhIGxldHRlcmF0dXJhIGFnbGkgc3R1ZGkgc3VsIGRpc3Bvc2l0aXZvLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiQ0VSIMK3IGNsaW5pY2FsIGludmVzdGlnYXRpb24gwrcgSVNPIDE0MTU1IgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAicmVnIiwKICAgICAgImNyIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbXSwKICAgICJyb2xlcyI6IHsKICAgICAgInJlZyI6IHsKICAgICAgICAiZW4iOiAiQ2xpbmljYWwgRXZhbHVhdGlvbiBSZXBvcnQgYW5kIGNsaW5pY2FsIGV2aWRlbmNlIHN0cmF0ZWd5IiwKICAgICAgICAiaXQiOiAiUmFwcG9ydG8gZGkgdmFsdXRhemlvbmUgY2xpbmljYSAoQ0VSKSBlIHN0cmF0ZWdpYSBwZXIgbOKAmWV2aWRlbnphIGNsaW5pY2EiCiAgICAgIH0sCiAgICAgICJjciI6IHsKICAgICAgICAiZW4iOiAiRGVzaWduIGFuZCBjb25kdWN0IG9mIHRoZSBjbGluaWNhbCBpbnZlc3RpZ2F0aW9uIChJU08gMTQxNTUpIiwKICAgICAgICAiaXQiOiAiRGlzZWdubyBlIGNvbmR1emlvbmUgZGVsbOKAmWluZGFnaW5lIGNsaW5pY2EgKElTTyAxNDE1NSkiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENhcHR1cmUgKEVEQykiLAogICAgICAiYUNoaXJhbCBDb2JhbHQgKGVRTVMvZVRNRikiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJJU08gMTQxNTUiLAogICAgICAiRVUgTURSIiwKICAgICAgIk1FRERFViAvIE1EQ0ciCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiZG9zc2llciIsCiAgICAiY2F0ZWdvcnkiOiAibWFya2V0IiwKICAgICJzdWIiOiAiY2VydCIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJUZWNobmljYWwgZG9jdW1lbnRhdGlvbiAmIGRvc3NpZXIiLAogICAgICAiaXQiOiAiRG9jdW1lbnRhemlvbmUgdGVjbmljYSBlIGRvc3NpZXIiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJUZWNobmljYWwgZmlsZSDCtyBkb3NzaWVyIHN1Ym1pc3Npb24gwrcgTW9kdWxlIDQiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSBwcmVwYXJlIGFuZCBzdWJtaXQgeW91ciByZWd1bGF0b3J5IGRvc3NpZXIgKEZEQSwgRVUsIElTTyAxMzQ4NSkuIiwKICAgICAgICAiaXQiOiAiUHJlcGFyaWFtbyBlIHByZXNlbnRpYW1vIGlsIHR1byBkb3NzaWVyIHJlZ29sYXRvcmlvIChGREEsIFVFLCBJU08gMTM0ODUpLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiVGVjaG5pY2FsIGZpbGUgwrcgZG9zc2llciBzdWJtaXNzaW9uIMK3IE1vZHVsZSA0IgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAicmVnIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIlByZXBhcmF0aW9uIGFuZCBzdWJtaXNzaW9uIG9mIHJlZ3VsYXRvcnkgZG9zc2llcnMgKEZEQSwgRVUgTURSL0lWRFIsIElTTyAxMzQ4NSkiLAogICAgICAgICJpdCI6ICJQcmVwYXJhemlvbmUgZSBwcmVzZW50YXppb25lIGRlaSBkb3NzaWVyIHJlZ29sYXRvcmkgKEZEQSwgTURSL0lWRFIgVUUsIElTTyAxMzQ4NSkiCiAgICAgIH0sCiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiRG9jdW1lbnQgdGVtcGxhdGVzIGFuZCBjb250cm9sbGVkIERNUyBpbiBhQ2hpcmFsIENvYmFsdCIsCiAgICAgICAgIml0IjogIk1vZGVsbGkgZGkgZG9jdW1lbnRvIGUgYXJjaGl2aW8gZG9jdW1lbnRhbGUgY29udHJvbGxhdG8gaW4gYUNoaXJhbCBDb2JhbHQiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENvYmFsdCAoZVFNUy9lVE1GKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIkVVIE1EUi9JVkRSIiwKICAgICAgIkZEQSIsCiAgICAgICJJU08gMTM0ODUiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAicG1jZiIsCiAgICAiY2F0ZWdvcnkiOiAibWFya2V0IiwKICAgICJzdWIiOiAiYWZ0ZXIiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiUG9zdC1tYXJrZXQgc3VydmVpbGxhbmNlIChQTVMvUE1DRikiLAogICAgICAiaXQiOiAiU29ydmVnbGlhbnphIHBvc3QtY29tbWVyY2lhbGl6emF6aW9uZSAoUE1TL1BNQ0YpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiUE1TIMK3IFBNQ0YgwrcgcG9zdC1tYXJrZXQgdHJpYWxzIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2Uga2VlcCB5b3VyIHByb2R1Y3QgY29tcGxpYW50IGFmdGVyIGxhdW5jaCwgd2l0aCBzdXJ2ZWlsbGFuY2UgYW5kIGZvbGxvdy11cC4iLAogICAgICAgICJpdCI6ICJNYW50ZW5pYW1vIGlsIHByb2RvdHRvIGNvbmZvcm1lIGRvcG8gaWwgbGFuY2lvLCBjb24gYXR0aXZpdMOgIGRpIHNvcnZlZ2xpYW56YSBlIGZvbGxvdy11cC4iCiAgICAgIH0sCiAgICAgICJ0ZWNoIjogIlBNUyDCtyBQTUNGIMK3IHBvc3QtbWFya2V0IHRyaWFscyIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgInJlZyIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiY3IiLAogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJNRFItY29tcGxpYW50IHBvc3QtbWFya2V0IHN1cnZlaWxsYW5jZSBhbmQgUE1DRiBwbGFucyIsCiAgICAgICAgIml0IjogIlBpYW5pIGRpIHNvcnZlZ2xpYW56YSBwb3N0LWNvbW1lcmNpYWxpenphemlvbmUgZSBQTUNGIGNvbmZvcm1pIGFsbOKAmU1EUiIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJQb3N0LW1hcmtldCB0cmlhbHMgYW5kIG9ic2VydmF0aW9uYWwgc3R1ZGllcyIsCiAgICAgICAgIml0IjogIlN0dWRpIHBvc3QtY29tbWVyY2lhbGl6emF6aW9uZSBlIG9zc2VydmF6aW9uYWxpIgogICAgICB9LAogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogIkNvbnRpbnVvdXMgUldEIGNhcHR1cmUgdmlhIGFDaGlyYWwgQ29ubmVjdC9Db21wYWN0IiwKICAgICAgICAiaXQiOiAiUmFjY29sdGEgY29udGludWEgZGkgZGF0aSByZWFsLXdvcmxkIGNvbiBhQ2hpcmFsIENvbm5lY3QvQ29tcGFjdCIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ29ubmVjdCAodGVsZW1lZGljaW5lL0hJUykiLAogICAgICAiYUNoaXJhbCBDb21wYWN0IChtb2JpbGUpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiRVUgTURSIFBNQ0YiLAogICAgICAiSVNPIDE0MTU1IgogICAgXQogIH0sCiAgewogICAgImlkIjogInZpZ2lsYW5jZSIsCiAgICAiY2F0ZWdvcnkiOiAibWFya2V0IiwKICAgICJzdWIiOiAiYWZ0ZXIiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiVmlnaWxhbmNlICYgaW5jaWRlbnQgcmVwb3J0aW5nIiwKICAgICAgIml0IjogIlZpZ2lsYW56YSBlIHNlZ25hbGF6aW9uZSBpbmNpZGVudGkiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJWaWdpbGFuY2UgwrcgTUlSIMK3IGNvbXBsYWludHMgwrcgaW5jaWRlbnQgU0RLIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgbWFuYWdlIGNvbXBsYWludHMsIGluY2lkZW50cyBhbmQgdmlnaWxhbmNlIHJlcG9ydGluZyB0byBhdXRob3JpdGllcy4iLAogICAgICAgICJpdCI6ICJHZXN0aWFtbyByZWNsYW1pLCBpbmNpZGVudGkgZSBzZWduYWxhemlvbmkgZGkgdmlnaWxhbnphIGFsbGUgYXV0b3JpdMOgLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiVmlnaWxhbmNlIMK3IE1JUiDCtyBjb21wbGFpbnRzIMK3IGluY2lkZW50IFNESyIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgInJlZyIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJDb21wbGFpbnQgaGFuZGxpbmcsIGluY2lkZW50IG1hbmFnZW1lbnQgYW5kIHZpZ2lsYW5jZSByZXBvcnRpbmciLAogICAgICAgICJpdCI6ICJHZXN0aW9uZSByZWNsYW1pLCBpbmNpZGVudGkgZSBzZWduYWxhemlvbmkgZGkgdmlnaWxhbnphIgogICAgICB9LAogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogIkNyb3NzLXBsYXRmb3JtIGluY2lkZW50IHJlcG9ydGluZyBTREsiLAogICAgICAgICJpdCI6ICJTREsgbXVsdGlwaWF0dGFmb3JtYSBwZXIgbGEgc2VnbmFsYXppb25lIGRlZ2xpIGluY2lkZW50aSIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ29iYWx0IChlUU1TL2VUTUYpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiRVUgTURSIHZpZ2lsYW5jZSIsCiAgICAgICJJU08gMTM0ODUiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiYXNpYWV1IiwKICAgICJjYXRlZ29yeSI6ICJtYXJrZXQiLAogICAgInN1YiI6ICJpbnRsIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIkVVIG1hcmtldCBhY2Nlc3MgZnJvbSBhYnJvYWQiLAogICAgICAiaXQiOiAiQWNjZXNzbyBhbCBtZXJjYXRvIFVFIGRhbGzigJllc3Rlcm8iCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJJbmJvdW5kIEFzaWEg4oaSIENFIG1hcmtpbmcgwrcgSU1EUkYgYWxpZ25tZW50IiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgYnJpbmcgbm9uLUVVIHByb2R1Y3RzIChlLmcuIGZyb20gQXNpYSkgdG8gdGhlIEV1cm9wZWFuIG1hcmtldCB3aXRoIENFIG1hcmtpbmcuIiwKICAgICAgICAiaXQiOiAiUG9ydGlhbW8gcHJvZG90dGkgZXh0cmEtVUUgKGFkIGVzLiBkYWxs4oCZQXNpYSkgc3VsIG1lcmNhdG8gZXVyb3BlbyBjb24gbGEgbWFyY2F0dXJhIENFLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiSW5ib3VuZCBBc2lhIOKGkiBDRSBtYXJraW5nIMK3IElNRFJGIGFsaWdubWVudCIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgInJlZyIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJFdXJvcGVhbiBDRS1tYXJraW5nIHBhdGh3YXkgZm9yIENoaW5lc2UsIEtvcmVhbiBhbmQgSW5kaWFuIGNvbXBhbmllcyIsCiAgICAgICAgIml0IjogIlBlcmNvcnNvIGRpIG1hcmNhdHVyYSBDRSBwZXIgYXppZW5kZSBjaW5lc2ksIGNvcmVhbmUgZSBpbmRpYW5lIgogICAgICB9LAogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogIlRlY2huaWNhbCBhbmQgcXVhbGl0eSBldmlkZW5jZSBmb3IgdGhlIEVVIG1hcmtldCIsCiAgICAgICAgIml0IjogIkV2aWRlbnplIHRlY25pY2hlIGUgZGkgcXVhbGl0w6AgcGVyIGlsIG1lcmNhdG8gVUUiCiAgICAgIH0KICAgIH0sCiAgICAicGYiOiBbCiAgICAgICJhQ2hpcmFsIENvYmFsdCAoZVFNUy9lVE1GKSIKICAgIF0sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgIkVVIE1EUi9JVkRSIiwKICAgICAgIklTTyAxMzQ4NSIsCiAgICAgICJJTURSRiIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJ0ZWxlbWVkIiwKICAgICJjYXRlZ29yeSI6ICJkaWdpdGFsIiwKICAgICJzdWIiOiAiY2FyZSIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJUZWxlbWVkaWNpbmUgJiBjbGluaWNhbCByZWNvcmRzIiwKICAgICAgIml0IjogIlRlbGVtZWRpY2luYSBlIGNhcnRlbGxhIGNsaW5pY2EiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJUZWxlaGVhbHRoIMK3IEVIUiDCtyBXZWJSVEMgwrcgRkhJUiBSNCIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIlZpZGVvIHZpc2l0cywgY2xpbmljYWwgcmVjb3JkcyBhbmQgcHJlc2NyaXB0aW9ucyDigJQgaW4gb25lIHBsYXRmb3JtLiIsCiAgICAgICAgIml0IjogIlRlbGV2aXNpdGUsIGNhcnRlbGxhIGNsaW5pY2EgZSBwcmVzY3JpemlvbmkgaW4gdW7igJl1bmljYSBwaWF0dGFmb3JtYS4iCiAgICAgIH0sCiAgICAgICJ0ZWNoIjogIlRlbGVoZWFsdGggwrcgRUhSIMK3IFdlYlJUQyDCtyBGSElSIFI0IgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFtdLAogICAgInJvbGVzIjogewogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogImFDaGlyYWwgQ29ubmVjdDogdGVsZWNvbnN1bHRhdGlvbnMsIGxvbmdpdHVkaW5hbCBjbGluaWNhbCByZWNvcmQsIHByZXNjcmlwdGlvbnMgYW5kIGZvbGxvdy11cCIsCiAgICAgICAgIml0IjogImFDaGlyYWwgQ29ubmVjdDogdGVsZWNvbnN1bHRpLCBjYXJ0ZWxsYSBjbGluaWNhIGxvbmdpdHVkaW5hbGUsIHByZXNjcml6aW9uaSBlIGZvbGxvdy11cCIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ29ubmVjdCAodGVsZW1lZGljaW5lL0hJUykiLAogICAgICAiYUNoaXJhbCBDb21wYWN0IChtb2JpbGUpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiR0RQUiIsCiAgICAgICJJU08gMjcwMDEiLAogICAgICAiSEw3IEZISVIgUjQiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAibW9iaWxlIiwKICAgICJjYXRlZ29yeSI6ICJkaWdpdGFsIiwKICAgICJzdWIiOiAiY2FyZSIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJEb2N0b3IgJiBwYXRpZW50IG1vYmlsZSBhcHBzIiwKICAgICAgIml0IjogIkFwcCBtb2JpbGUgcGVyIG1lZGljaSBlIHBhemllbnRpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiaU9TL0FuZHJvaWQgwrcgRmx1dHRlciDCtyBwdXNoIG5vdGlmaWNhdGlvbnMiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJZb3VyIGNsaW5pYyBpbiB0aGUgcGF0aWVudOKAmXMgcG9ja2V0OiBib29raW5nLCB2aWRlbywgZG9jdW1lbnRzIGFuZCByZW1pbmRlcnMuIiwKICAgICAgICAiaXQiOiAiTGEgdHVhIHN0cnV0dHVyYSBzZW1wcmUgYSBwb3J0YXRhIGRpIG1hbm8gZGVsIHBhemllbnRlOiBwcmVub3RhemlvbmksIHZpZGVvLCBkb2N1bWVudGkgZSBwcm9tZW1vcmlhLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiaU9TL0FuZHJvaWQgwrcgRmx1dHRlciDCtyBwdXNoIG5vdGlmaWNhdGlvbnMiCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogW10sCiAgICAicm9sZXMiOiB7CiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiYUNoaXJhbCBDb21wYWN0OiBkb2N0b3IgYW5kIHBhdGllbnQgbW9iaWxlIGFwcHMgcGFpcmVkIHdpdGggQ29ubmVjdCIsCiAgICAgICAgIml0IjogImFDaGlyYWwgQ29tcGFjdDogYXBwIG1vYmlsZSBwZXIgbWVkaWNpIGUgcGF6aWVudGksIGludGVncmF0ZSBjb24gYUNoaXJhbCBDb25uZWN0IgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDb21wYWN0IChtb2JpbGUpIiwKICAgICAgImFDaGlyYWwgQ29ubmVjdCAodGVsZW1lZGljaW5lL0hJUykiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJHRFBSIiwKICAgICAgIklTTyAyNzAwMSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJjb250ZW50IiwKICAgICJjYXRlZ29yeSI6ICJkaWdpdGFsIiwKICAgICJzdWIiOiAiY2FyZSIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJQYXRpZW50IGNvbnRlbnQgJiBBSSBhc3Npc3RhbnQiLAogICAgICAiaXQiOiAiQ29udGVudXRpIHBlciBwYXppZW50aSBlIGFzc2lzdGVudGUgQUkiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJDTVMgwrcgc3VydmV5cyDCtyBMaXZlS2l0IHZpZGVvIMK3IEFJIGNoYXRib3QiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJFZHVjYXRpb25hbCBjb250ZW50LCBzdXJ2ZXlzIGFuZCBhbiBBSSBhc3Npc3RhbnQgdG8ga2VlcCBwYXRpZW50cyBlbmdhZ2VkLiIsCiAgICAgICAgIml0IjogIkNvbnRlbnV0aSBlZHVjYXRpdmksIHF1ZXN0aW9uYXJpIGUgdW4gYXNzaXN0ZW50ZSBBSSBwZXIgbWFudGVuZXJlIGkgcGF6aWVudGkgY29pbnZvbHRpLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiQ01TIMK3IHN1cnZleXMgwrcgTGl2ZUtpdCB2aWRlbyDCtyBBSSBjaGF0Ym90IgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFtdLAogICAgInJvbGVzIjogewogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogImFDaGlyYWwgQ29udGVudCArIENhdGlvbjogcGF0aWVudCBlbmdhZ2VtZW50IGNvbnRlbnQgYW5kIGEgZ292ZXJuZWQgQUkgYXNzaXN0YW50IiwKICAgICAgICAiaXQiOiAiYUNoaXJhbCBDb250ZW50ICsgQ2F0aW9uOiBjb250ZW51dGkgcGVyIGNvaW52b2xnZXJlIGkgcGF6aWVudGkgZSB1biBhc3Npc3RlbnRlIEFJIHNvdHRvIGNvbnRyb2xsbyIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ29udGVudCAoZW5nYWdlbWVudCkiLAogICAgICAiYUNoaXJhbCBDYXRpb24gKEFJIGNoYXRib3QpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiR0RQUiIsCiAgICAgICJXQ0FHIDIuMSBBQSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJ3ZWFyYWJsZSIsCiAgICAiY2F0ZWdvcnkiOiAiZGlnaXRhbCIsCiAgICAic3ViIjogImRkYXRhIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIldlYXJhYmxlcyAmIHJlYWwtd29ybGQgZGF0YSIsCiAgICAgICJpdCI6ICJEaXNwb3NpdGl2aSBpbmRvc3NhYmlsaSBlIGRhdGkgcmVhbC13b3JsZCIKICAgIH0sCiAgICAibGFiZWxUZWNoIjogIklvTVQgwrcgY29udGludW91cyBiaW9zaWduYWxzIMK3IFJXRCIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIkNvbnRpbnVvdXMgZGF0YSBmcm9tIHdlYXJhYmxlcyBhbmQgc21hcnQgZGV2aWNlcywgaW4gdmFsaWRhdGVkIHBpcGVsaW5lcy4iLAogICAgICAgICJpdCI6ICJEYXRpIHJhY2NvbHRpIGluIG1vZG8gY29udGludW8gZGEgZGlzcG9zaXRpdmkgaW5kb3NzYWJpbGkgZSBzbWFydCwgaW4gZmx1c3NpIGNvbnZhbGlkYXRpLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiSW9NVCDCtyBjb250aW51b3VzIGJpb3NpZ25hbHMgwrcgUldEIgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFsKICAgICAgImNyIiwKICAgICAgInJlZyIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiQ29udGludW91cyBiaW9zaWduYWwgY2FwdHVyZSAoSW9NVCkgdmlhIGFDaGlyYWwgQ29ubmVjdC9Db21wYWN0IGluIHZhbGlkYXRlZCBwaXBlbGluZXMiLAogICAgICAgICJpdCI6ICJSYWNjb2x0YSBjb250aW51YSBkaSBiaW9zZWduYWxpIChJb01UKSBjb24gYUNoaXJhbCBDb25uZWN0L0NvbXBhY3QsIGluIGZsdXNzaSBkaSBkYXRpIGNvbnZhbGlkYXRpIgogICAgICB9LAogICAgICAiY3IiOiB7CiAgICAgICAgImVuIjogIlJlYWwtd29ybGQgZXZpZGVuY2UgdG8gc3VwcG9ydCBkZWNpc2lvbnMiLAogICAgICAgICJpdCI6ICJFdmlkZW56ZSByZWFsLXdvcmxkIGEgc3VwcG9ydG8gZGVsbGUgZGVjaXNpb25pIgogICAgICB9LAogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJSZWFsLXdvcmxkIGRhdGEgZm9yIHBvc3QtbWFya2V0IHN1cnZlaWxsYW5jZSIsCiAgICAgICAgIml0IjogIkRhdGkgcmVhbC13b3JsZCBwZXIgbGEgc29ydmVnbGlhbnphIHBvc3QtbWFya2V0IgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDb25uZWN0ICh0ZWxlbWVkaWNpbmUvSElTKSIsCiAgICAgICJhQ2hpcmFsIENvbXBhY3QgKG1vYmlsZSkiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJNRFIgUE1DRiIsCiAgICAgICJHRFBSIiwKICAgICAgIklFQyA2MjMwNCIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJhaWRhdGEiLAogICAgImNhdGVnb3J5IjogImRpZ2l0YWwiLAogICAgInN1YiI6ICJkZGF0YSIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJBSSAmIGF1Z21lbnRlZC1kYXRhIGluc2lnaHRzIiwKICAgICAgIml0IjogIkFuYWxpc2kgY29uIGzigJlBSSBlIGRhdGkgYXVtZW50YXRpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiQXVnbWVudGVkIGRhdGEgwrcgZGVjaXNpb24tc3VwcG9ydCBBSSDCtyBsb25naXR1ZGluYWwgcHJvZmlsZXMiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSB0dXJuIHZhbGlkYXRlZCBkYXRhIGludG8gQUktYXNzaXN0ZWQgaW5zaWdodHMg4oCUIGNvbnRyb2xsZWQgYW5kIHRyYWNlYWJsZS4iLAogICAgICAgICJpdCI6ICJUcmFzZm9ybWlhbW8gZGF0aSBjb252YWxpZGF0aSBpbiBpbmRpY2F6aW9uaSB1dGlsaSBjb24gaWwgc3VwcG9ydG8gZGVsbOKAmUFJLCBjb250cm9sbGF0ZSBlIHRyYWNjaWFiaWxpLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiQXVnbWVudGVkIGRhdGEgwrcgZGVjaXNpb24tc3VwcG9ydCBBSSDCtyBsb25naXR1ZGluYWwgcHJvZmlsZXMiCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiY3IiLAogICAgICAicmVnIgogICAgXSwKICAgICJyb2xlcyI6IHsKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJNdWx0aW1vZGFsIGFnZ3JlZ2F0aW9uLCBsb25naXR1ZGluYWwgcGF0aWVudCBwcm9maWxlcyBhbmQgQUkgZGFzaGJvYXJkcyBvbiB2YWxpZGF0ZWQgcGlwZWxpbmVzIiwKICAgICAgICAiaXQiOiAiQWdncmVnYXppb25lIGRpIGRhdGkgZGkgZGl2ZXJzYSBvcmlnaW5lLCBzdG9yaWNvIGRlaSBwYXppZW50aSBlIGNydXNjb3R0aSBBSSBzdSBmbHVzc2kgZGkgZGF0aSBjb252YWxpZGF0aSIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJBSSBzdXBwb3J0aW5nIGZlYXNpYmlsaXR5LCBtb25pdG9yaW5nIGFuZCBhbmFseXNpcyDigJQgYXMgZGVjaXNpb24tc3VwcG9ydCIsCiAgICAgICAgIml0IjogIkFJIGNvbWUgc3VwcG9ydG8gYWxsZSBkZWNpc2lvbmkgc3UgZmF0dGliaWxpdMOgLCBtb25pdG9yYWdnaW8gZSBhbmFsaXNpIgogICAgICB9LAogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJNb2RlbCBnb3Zlcm5hbmNlLCBkb2N1bWVudGVkIGludGVuZGVkIHVzZSBhbmQgdmFsaWRhdGlvbiIsCiAgICAgICAgIml0IjogIkdvdmVybmFuY2UgZGVsIG1vZGVsbG8sIGRlc3RpbmF6aW9uZSBk4oCZdXNvIGRvY3VtZW50YXRhIGUgY29udmFsaWRhIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDYXRpb24gKEFJIGNoYXRib3QpIiwKICAgICAgImFDaGlyYWwgQ2FwdHVyZSAoRURDKSIsCiAgICAgICJhQ2hpcmFsIENvbm5lY3QgKHRlbGVtZWRpY2luZS9ISVMpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiRVUgQUkgQWN0IiwKICAgICAgIkdBTVAgNSIsCiAgICAgICJBTENPQSsiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAiaWRlbnRpdHkiLAogICAgImNhdGVnb3J5IjogImRpZ2l0YWwiLAogICAgInN1YiI6ICJmb3VuZCIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJJZGVudGl0eSwgYWNjZXNzICYgZS1zaWduYXR1cmUiLAogICAgICAiaXQiOiAiSWRlbnRpdMOgLCBhY2Nlc3NpIGUgZmlybWEgZWxldHRyb25pY2EiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJJQU0gwrcgU1NPIMK3IEtleWNsb2FrIMK3IDIxIENGUiBQYXJ0IDExIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiT25lIHNlY3VyZSBsb2dpbiBhbmQgY29tcGxpYW50IGUtc2lnbmF0dXJlcyBhY3Jvc3MgZXZlcnkgcGxhdGZvcm0uIiwKICAgICAgICAiaXQiOiAiVW4gdW5pY28gYWNjZXNzbyBzaWN1cm8gZSBmaXJtZSBlbGV0dHJvbmljaGUgY29uZm9ybWkgc3UgdHV0dGUgbGUgcGlhdHRhZm9ybWUuIgogICAgICB9LAogICAgICAidGVjaCI6ICJJQU0gwrcgU1NPIMK3IEtleWNsb2FrIMK3IDIxIENGUiBQYXJ0IDExIgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAiZGgiCiAgICBdLAogICAgInNlY29uZGFyeSI6IFsKICAgICAgInJlZyIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiRmVkZXJhdGVkIGlkZW50aXR5LCBwcm92aXNpb25pbmcgYW5kIDIxIENGUiBQYXJ0IDExIHZlcmlmaWFibGUgc2lnbmF0dXJlcyIsCiAgICAgICAgIml0IjogIklkZW50aXTDoCBmZWRlcmF0YSwgZ2VzdGlvbmUgZGVsbGUgdXRlbnplIGUgZmlybWUgdmVyaWZpY2FiaWxpIGNvbmZvcm1pIGFsIDIxIENGUiBQYXJ0IDExIgogICAgICB9LAogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJTZWdyZWdhdGlvbiBvZiBkdXRpZXMgYW5kIHNpZ25hdHVyZSBhdWRpdCB0cmFpbCIsCiAgICAgICAgIml0IjogIlNlcGFyYXppb25lIGRlaSBydW9saSBlIGF1ZGl0IHRyYWlsIGRlbGxlIGZpcm1lIgogICAgICB9CiAgICB9LAogICAgInBmIjogW10sCiAgICAiY29tcGxpYW5jZSI6IFsKICAgICAgImVJREFTIiwKICAgICAgIkdEUFIiLAogICAgICAiTklTMiIsCiAgICAgICIyMSBDRlIgUGFydCAxMSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJwcml2YWN5IiwKICAgICJjYXRlZ29yeSI6ICJkaWdpdGFsIiwKICAgICJzdWIiOiAiZm91bmQiLAogICAgImxhYmVsTm9ybWFsIjogewogICAgICAiZW4iOiAiRGF0YSBwcml2YWN5ICYgcHNldWRvbnltaXNhdGlvbiIsCiAgICAgICJpdCI6ICJQcml2YWN5IGUgcHNldWRvbmltaXp6YXppb25lIGRlaSBkYXRpIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiUHNldWRvbnltaXNhdGlvbiDCtyBHRFBSIEFydC4gMzIgwrcgYXVkaXQgdHJhaWwiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSBwcm90ZWN0IHBhdGllbnQgaWRlbnRpdHkgaW4gZGF0YSBhbmQgY29tbXVuaWNhdGlvbnMuIiwKICAgICAgICAiaXQiOiAiUHJvdGVnZ2lhbW8gbOKAmWlkZW50aXTDoCBkZWkgcGF6aWVudGkgbmVpIGRhdGkgZSBuZWxsZSBjb211bmljYXppb25pLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiUHNldWRvbnltaXNhdGlvbiDCtyBHRFBSIEFydC4gMzIgwrcgYXVkaXQgdHJhaWwiCiAgICB9LAogICAgInByaW1hcnkiOiBbCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAicmVnIgogICAgXSwKICAgICJyb2xlcyI6IHsKICAgICAgImRoIjogewogICAgICAgICJlbiI6ICJhQ2hpcmFsIENyeXB0ZXg6IGVtYWlsIHBzZXVkb255bWlzYXRpb24sIHJldmVyc2libGUgYWxpYXNlcyBhbmQgQUxDT0ErIGF1ZGl0IiwKICAgICAgICAiaXQiOiAiYUNoaXJhbCBDcnlwdGV4OiBwc2V1ZG9uaW1penphemlvbmUgZGVsbGUgZW1haWwsIGFsaWFzIHJldmVyc2liaWxpIGUgYXVkaXQgQUxDT0ErIgogICAgICB9LAogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJHRFBSIEFydC4gMzIgc2VjdXJpdHkgZXZpZGVuY2UgZm9yIGRvc3NpZXJzIGFuZCBSRlBzIiwKICAgICAgICAiaXQiOiAiRXZpZGVuemUgZGkgc2ljdXJlenphIChhcnQuIDMyIEdEUFIpIHBlciBkb3NzaWVyIGUgZ2FyZSIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ3J5cHRleCAocHJpdmFjeSkiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJHRFBSIEFydC4gNCg1KSAmIDMyIiwKICAgICAgIklTTyAyNzAwMSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJjb2RldiIsCiAgICAiY2F0ZWdvcnkiOiAiZGlnaXRhbCIsCiAgICAic3ViIjogImZvdW5kIiwKICAgICJsYWJlbE5vcm1hbCI6IHsKICAgICAgImVuIjogIkN1c3RvbSBwbGF0Zm9ybSBjby1kZXZlbG9wbWVudCIsCiAgICAgICJpdCI6ICJDby1zdmlsdXBwbyBkaSBwaWF0dGFmb3JtZSBzdSBtaXN1cmEiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJDby1kZXZlbG9wbWVudCDCtyB3aGl0ZS1sYWJlbCDCtyBTYU1ELXJlYWR5IiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgYnVpbGQgYSBjb21wbGlhbnQgZGlnaXRhbC1oZWFsdGggcGxhdGZvcm0gdGFpbG9yZWQgdG8geW91IOKAlCBsaWNlbnNlZCBvciB3aGl0ZS1sYWJlbC4iLAogICAgICAgICJpdCI6ICJDb3N0cnVpYW1vIHVuYSBwaWF0dGFmb3JtYSBkaSBkaWdpdGFsIGhlYWx0aCBjb25mb3JtZSBlIHN1IG1pc3VyYSwgaW4gbGljZW56YSBvIHdoaXRlLWxhYmVsLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiQ28tZGV2ZWxvcG1lbnQgwrcgd2hpdGUtbGFiZWwgwrcgU2FNRC1yZWFkeSIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgImRoIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJyZWciCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogIkN1c3RvbSBjby1kZXZlbG9wbWVudCBvZiBwbGF0Zm9ybXMgZm9yIHRoaXJkIHBhcnRpZXMsIGxpY2Vuc2VkIG9yIHdoaXRlLWxhYmVsIiwKICAgICAgICAiaXQiOiAiQ28tc3ZpbHVwcG8gZGkgcGlhdHRhZm9ybWUgcGVyIHRlcnppLCBpbiBsaWNlbnphIG8gd2hpdGUtbGFiZWwiCiAgICAgIH0sCiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIlJlZ3VsYXRvcnkgcHJvZmlsZSAoR0FNUDUgLyBTYU1EIC8gRFR4KSBkZWZpbmVkIGF0IGRlc2lnbiB0aW1lIiwKICAgICAgICAiaXQiOiAiUHJvZmlsbyByZWdvbGF0b3JpbyAoR0FNUCA1IC8gU2FNRCAvIERUeCkgZGVmaW5pdG8gaW4gZmFzZSBkaSBwcm9nZXR0YXppb25lIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIiwKICAgICAgImFDaGlyYWwgQ29ubmVjdCAodGVsZW1lZGljaW5lL0hJUykiCiAgICBdLAogICAgImNvbXBsaWFuY2UiOiBbCiAgICAgICJHQU1QIDUiLAogICAgICAiSUVDIDYyMzA0IiwKICAgICAgIkdEUFIiCiAgICBdCiAgfSwKICB7CiAgICAiaWQiOiAicW1zIiwKICAgICJjYXRlZ29yeSI6ICJxdWFsaXR5IiwKICAgICJzdWIiOiAicXN5cyIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJRdWFsaXR5IG1hbmFnZW1lbnQgc3lzdGVtIChlUU1TL2VUTUYpIiwKICAgICAgIml0IjogIlNpc3RlbWEgZGkgZ2VzdGlvbmUgZGVsbGEgcXVhbGl0w6AgKGVRTVMvZVRNRikiCiAgICB9LAogICAgImxhYmVsVGVjaCI6ICJlUU1TIMK3IGVUTUYvZUlTRiDCtyBDQVBBIMK3IElTTyAxMzQ4NSIsCiAgICAic3VidGl0bGUiOiB7CiAgICAgICJub3JtYWwiOiB7CiAgICAgICAgImVuIjogIkEgZnVsbCBlbGVjdHJvbmljIHF1YWxpdHkgc3lzdGVtOiBjb250cm9sbGVkIGRvY3VtZW50cywgQ0FQQSwgdHJhaW5pbmcgYW5kIGVUTUYuIiwKICAgICAgICAiaXQiOiAiVW4gc2lzdGVtYSBxdWFsaXTDoCBlbGV0dHJvbmljbyBjb21wbGV0bzogZG9jdW1lbnRpIGNvbnRyb2xsYXRpLCBDQVBBLCBmb3JtYXppb25lIGVkIGVUTUYuIgogICAgICB9LAogICAgICAidGVjaCI6ICJlUU1TIMK3IGVUTUYvZUlTRiDCtyBDQVBBIMK3IElTTyAxMzQ4NSIKICAgIH0sCiAgICAicHJpbWFyeSI6IFsKICAgICAgInJlZyIsCiAgICAgICJkaCIKICAgIF0sCiAgICAic2Vjb25kYXJ5IjogWwogICAgICAiY3IiCiAgICBdLAogICAgInJvbGVzIjogewogICAgICAicmVnIjogewogICAgICAgICJlbiI6ICJJU08gMTM0ODUgcXVhbGl0eSBzeXN0ZW0gYW5kIEd4UCBwcm9jZWR1cmVzIiwKICAgICAgICAiaXQiOiAiU2lzdGVtYSBxdWFsaXTDoCBJU08gMTM0ODUgZSBwcm9jZWR1cmUgR3hQIgogICAgICB9LAogICAgICAiZGgiOiB7CiAgICAgICAgImVuIjogImFDaGlyYWwgQ29iYWx0OiBlUU1TL2VUTUYvZUlTRiB3aXRoIDIxIENGUiBQYXJ0IDExIHNpZ25hdHVyZXMsIENBUEEgYW5kIGF1ZGl0IGhhc2gtY2hhaW4iLAogICAgICAgICJpdCI6ICJhQ2hpcmFsIENvYmFsdDogZVFNUy9lVE1GL2VJU0YgY29uIGZpcm1lIGNvbmZvcm1pIGFsIDIxIENGUiBQYXJ0IDExLCBDQVBBIGUgYXVkaXQgdHJhaWwgYSBjYXRlbmEgZGkgaGFzaCIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJTdHVkeSBlVE1GIHdpdGhpbiB0aGUgdHJpYWwgZmxvdyIsCiAgICAgICAgIml0IjogImVUTUYgZGVsbG8gc3R1ZGlvIGludGVncmF0byBuZWwgZmx1c3NvIG9wZXJhdGl2byIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ29iYWx0IChlUU1TL2VUTUYpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiSVNPIDEzNDg1IiwKICAgICAgIklTTyA5MDAxIiwKICAgICAgIjIxIENGUiBQYXJ0IDExIiwKICAgICAgIkdBTVAgNSIKICAgIF0KICB9LAogIHsKICAgICJpZCI6ICJjc3YiLAogICAgImNhdGVnb3J5IjogInF1YWxpdHkiLAogICAgInN1YiI6ICJ2YWxpZCIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJDb21wdXRlciBTeXN0ZW0gVmFsaWRhdGlvbiAoQ1NWL0dBTVAgNSkiLAogICAgICAiaXQiOiAiQ29udmFsaWRhIGRlaSBzaXN0ZW1pIGluZm9ybWF0aWNpIChDU1YvR0FNUCA1KSIKICAgIH0sCiAgICAibGFiZWxUZWNoIjogIkNTViDCtyBHQU1QIDUgwrcgVk1QL1VSUy9JUS9PUS9QUSDCtyB0cmFjZWFiaWxpdHkiLAogICAgInN1YnRpdGxlIjogewogICAgICAibm9ybWFsIjogewogICAgICAgICJlbiI6ICJXZSB2YWxpZGF0ZSB5b3VyIHNvZnR3YXJlIHRvIEd4UCBzdGFuZGFyZHMg4oCUIGRvY3VtZW50YXRpb24gcGFja2FnZSBpbmNsdWRlZC4iLAogICAgICAgICJpdCI6ICJDb252YWxpZGlhbW8gaWwgdHVvIHNvZnR3YXJlIHNlY29uZG8gZ2xpIHN0YW5kYXJkIEd4UCwgcGFjY2hldHRvIGRvY3VtZW50YWxlIGluY2x1c28uIgogICAgICB9LAogICAgICAidGVjaCI6ICJDU1YgwrcgR0FNUCA1IMK3IFZNUC9VUlMvSVEvT1EvUFEgwrcgdHJhY2VhYmlsaXR5IgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAicmVnIiwKICAgICAgImRoIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJjciIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIlJpc2stYmFzZWQgQ1NWIHRvIEdBTVAgNSAoVk1QLCBVUlMsIElRL09RL1BRLCB0cmFjZWFiaWxpdHkpIiwKICAgICAgICAiaXQiOiAiQ29udmFsaWRhIGJhc2F0YSBzdWwgcmlzY2hpbyBzZWNvbmRvIEdBTVAgNSAoVk1QLCBVUlMsIElRL09RL1BRLCB0cmFjY2lhYmlsaXTDoCkiCiAgICAgIH0sCiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiYUNoaXJhbCBDb2JhbHQvQ2FwdHVyZTogR0FNUCA1IHZhbGlkYXRpb24gcGFja2FnZSBnZW5lcmF0ZWQgYW5kIHZlcnNpb25lZCB3aXRoIHRoZSByZWxlYXNlIiwKICAgICAgICAiaXQiOiAiYUNoaXJhbCBDb2JhbHQvQ2FwdHVyZTogcGFjY2hldHRvIGRpIGNvbnZhbGlkYSBHQU1QIDUgZ2VuZXJhdG8gZSBhZ2dpb3JuYXRvIGEgb2duaSByaWxhc2NpbyIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJBbm5leCAxMSBjb25mb3JtYW5jZSBpbiBzdHVkeSBzeXN0ZW1zIiwKICAgICAgICAiaXQiOiAiQ29uZm9ybWl0w6AgYWxs4oCZQW5uZXggMTEgZGVpIHNpc3RlbWkgZGVsbG8gc3R1ZGlvIgogICAgICB9CiAgICB9LAogICAgInBmIjogWwogICAgICAiYUNoaXJhbCBDb2JhbHQgKGVRTVMvZVRNRikiLAogICAgICAiYUNoaXJhbCBDYXB0dXJlIChFREMpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiR0FNUCA1IiwKICAgICAgIkVVIEFubmV4IDExIiwKICAgICAgIjIxIENGUiBQYXJ0IDExIgogICAgXQogIH0sCiAgewogICAgImlkIjogImF1ZGl0IiwKICAgICJjYXRlZ29yeSI6ICJxdWFsaXR5IiwKICAgICJzdWIiOiAiaW5zcCIsCiAgICAibGFiZWxOb3JtYWwiOiB7CiAgICAgICJlbiI6ICJBdWRpdCAmIGluc3BlY3Rpb24gcmVhZGluZXNzIiwKICAgICAgIml0IjogIkF1ZGl0IGUgcHJlcGFyYXppb25lIGFsbGUgaXNwZXppb25pIgogICAgfSwKICAgICJsYWJlbFRlY2giOiAiSW5zcGVjdGlvbiByZWFkaW5lc3MgwrcgRkRBIDQ4MyDCtyBlSVNGIiwKICAgICJzdWJ0aXRsZSI6IHsKICAgICAgIm5vcm1hbCI6IHsKICAgICAgICAiZW4iOiAiV2UgZ2V0IHlvdSByZWFkeSBmb3IgYXVkaXRzIGFuZCBpbnNwZWN0aW9ucyDigJQgRkRBIDQ4MywgTm90aWZpZWQgQm9keSBhbmQgbW9yZS4iLAogICAgICAgICJpdCI6ICJUaSBwcmVwYXJpYW1vIGFkIGF1ZGl0IGUgaXNwZXppb25pOiBGREEgNDgzLCBPcmdhbmlzbW8gTm90aWZpY2F0byBlIGFsdHJvLiIKICAgICAgfSwKICAgICAgInRlY2giOiAiSW5zcGVjdGlvbiByZWFkaW5lc3MgwrcgRkRBIDQ4MyDCtyBlSVNGIgogICAgfSwKICAgICJwcmltYXJ5IjogWwogICAgICAicmVnIiwKICAgICAgImRoIgogICAgXSwKICAgICJzZWNvbmRhcnkiOiBbCiAgICAgICJjciIKICAgIF0sCiAgICAicm9sZXMiOiB7CiAgICAgICJyZWciOiB7CiAgICAgICAgImVuIjogIkF1ZGl0IGFuZCBpbnNwZWN0aW9uIHN1cHBvcnQsIEZEQSA0ODMgcmVzcG9uc2UgbWFuYWdlbWVudCwgY2VydGlmaWNhdGlvbnMiLAogICAgICAgICJpdCI6ICJTdXBwb3J0byBhZCBhdWRpdCBlIGlzcGV6aW9uaSwgZ2VzdGlvbmUgZGVsbGUgcmlzcG9zdGUgRkRBIDQ4MywgY2VydGlmaWNhemlvbmkiCiAgICAgIH0sCiAgICAgICJkaCI6IHsKICAgICAgICAiZW4iOiAiYUNoaXJhbCBDb2JhbHQ6IGluc3BlY3Rpb24tcmVhZHkgZVRNRi9lSVNGIHdpdGggYXVkaXQgaGFzaC1jaGFpbiIsCiAgICAgICAgIml0IjogImFDaGlyYWwgQ29iYWx0OiBlVE1GL2VJU0YgcHJvbnRpIHBlciBs4oCZaXNwZXppb25lLCBjb24gYXVkaXQgdHJhaWwgYSBjYXRlbmEgZGkgaGFzaCIKICAgICAgfSwKICAgICAgImNyIjogewogICAgICAgICJlbiI6ICJTdHVkeSBlc3NlbnRpYWwgZG9jdW1lbnRzIHJlYWR5IGZvciBpbnNwZWN0aW9uIiwKICAgICAgICAiaXQiOiAiRG9jdW1lbnRpIGVzc2VuemlhbGkgZGVsbG8gc3R1ZGlvIHByb250aSBwZXIgbOKAmWlzcGV6aW9uZSIKICAgICAgfQogICAgfSwKICAgICJwZiI6IFsKICAgICAgImFDaGlyYWwgQ29iYWx0IChlUU1TL2VUTUYpIgogICAgXSwKICAgICJjb21wbGlhbmNlIjogWwogICAgICAiSUNILUdDUCBFNihSMykiLAogICAgICAiSVNPIDEzNDg1IiwKICAgICAgIjIxIENGUiBQYXJ0IDExIgogICAgXQogIH0KXTsKCi8qIEFyZWUgZGVpIHJlcXVpc2l0aTogaWNvbmEsIGNvbG9yZSBlIGRlc2NyaXppb25lIChjb21lIG5lbCBOYXZpZ2F0b3Igb3JpZ2luYWxlKSAqLwpjb25zdCBDQVRfTUVUQSA9IHsKICAic3R1ZHkiOiB7CiAgICAiY29sb3IiOiAiIzNkYjNhNCIsCiAgICAic29mdCI6ICIjZWFmN2Y2IiwKICAgICJkZXNjIjogewogICAgICAiZW4iOiAiRGVzaWduLCBydW4gYW5kIG1vbml0b3IgYSBjbGluaWNhbCB0cmlhbCDigJQgdHJhZGl0aW9uYWwgb3IgZGVjZW50cmFsaXplZC4iLAogICAgICAiaXQiOiAiRGlzZWduYXJlLCBjb25kdXJyZSBlIG1vbml0b3JhcmUgdW5vIHN0dWRpbyBjbGluaWNvLCB0cmFkaXppb25hbGUgbyBkZWNlbnRyYWxpenphdG8uIgogICAgfSwKICAgICJpY29uIjogIjxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS43XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHBhdGggZD1cIk05IDJoNk0xMCAydjZsLTQgOWEyIDIgMCAwIDAgMiAzaDhhMiAyIDAgMCAwIDItM2wtNC05VjJcIi8+PHBhdGggZD1cIk04IDE0aDhcIi8+PC9zdmc+IgogIH0sCiAgIm1hcmtldCI6IHsKICAgICJjb2xvciI6ICIjMDA3ZWE3IiwKICAgICJzb2Z0IjogIiNlNWYyZjYiLAogICAgImRlc2MiOiB7CiAgICAgICJlbiI6ICJHZXQgYSBkZXZpY2UsIElWRCBvciBtZWRpY2FsIHNvZnR3YXJlIGFwcHJvdmVkIGFuZCBrZWVwIGl0IGNvbXBsaWFudC4iLAogICAgICAiaXQiOiAiRmFyIGFwcHJvdmFyZSB1biBkaXNwb3NpdGl2bywgdW4gSVZEIG8gdW4gc29mdHdhcmUgbWVkaWNvIGUgbWFudGVuZXJsbyBjb25mb3JtZS4iCiAgICB9LAogICAgImljb24iOiAiPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjhcIiByPVwiNVwiLz48cGF0aCBkPVwibTkgMTItMiA5IDUtMyA1IDMtMi05XCIvPjxwYXRoIGQ9XCJtMTAgOCAxLjUgMS41TDE0IDdcIi8+PC9zdmc+IgogIH0sCiAgImRpZ2l0YWwiOiB7CiAgICAiY29sb3IiOiAiIzIwODZmNiIsCiAgICAic29mdCI6ICIjZWFmNWZmIiwKICAgICJkZXNjIjogewogICAgICAiZW4iOiAiVGVsZW1lZGljaW5lLCBwYXRpZW50IGFwcHMsIGRhdGEgcGxhdGZvcm1zIGFuZCBkaWdpdGFsIGZvdW5kYXRpb25zLiIsCiAgICAgICJpdCI6ICJUZWxlbWVkaWNpbmEsIGFwcCBwZXIgcGF6aWVudGksIHBpYXR0YWZvcm1lIGRhdGkgZSBpbmZyYXN0cnV0dHVyYSBkaWdpdGFsZSBkaSBiYXNlLiIKICAgIH0sCiAgICAiaWNvbiI6ICI8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuN1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxyZWN0IHg9XCIyXCIgeT1cIjRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjJcIi8+PHBhdGggZD1cIk04IDIxaDhNMTIgMTh2M1wiLz48cGF0aCBkPVwiTTYgMTFoMmwxLjUgMyAyLTYgMS41IDNIMThcIi8+PC9zdmc+IgogIH0sCiAgInF1YWxpdHkiOiB7CiAgICAiY29sb3IiOiAiIzAwN2VhNyIsCiAgICAic29mdCI6ICIjZTVmMmY2IiwKICAgICJkZXNjIjogewogICAgICAiZW4iOiAiUXVhbGl0eSBzeXN0ZW1zLCBjb21wdXRlciBzeXN0ZW0gdmFsaWRhdGlvbiBhbmQgaW5zcGVjdGlvbiByZWFkaW5lc3MuIiwKICAgICAgIml0IjogIlNpc3RlbWkgcXVhbGl0w6AsIGNvbnZhbGlkYSBkZWkgc2lzdGVtaSBpbmZvcm1hdGljaSBlIHByZXBhcmF6aW9uZSBhbGxlIGlzcGV6aW9uaS4iCiAgICB9LAogICAgImljb24iOiAiPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cGF0aCBkPVwiTTEyIDNsNyAzdjVjMCA0LjUtMyA4LTcgMTAtNC0yLTctNS41LTctMTBWNmw3LTNaXCIvPjxwYXRoIGQ9XCJNOSAxMmwyIDIgNC00XCIvPjwvc3ZnPiIKICB9Cn07CgovKiBTb3R0by1hcmVlIGRlaSByZXF1aXNpdGkgKGNvbWUgbmVsIE5hdmlnYXRvciBvcmlnaW5hbGUpICovCmNvbnN0IFNVQl9BUkVBUyA9IHsKICAic2V0dXAiOiB7CiAgICAiZW4iOiAiU3R1ZHkgc2V0LXVwIiwKICAgICJpdCI6ICJBdnZpbyBkZWxsbyBzdHVkaW8iCiAgfSwKICAicGF0aWVudHMiOiB7CiAgICAiZW4iOiAiUGF0aWVudHMiLAogICAgIml0IjogIlBhemllbnRpIgogIH0sCiAgImRhdGEiOiB7CiAgICAiZW4iOiAiRGF0YSAmIG1vbml0b3JpbmciLAogICAgIml0IjogIkRhdGkgZSBtb25pdG9yYWdnaW8iCiAgfSwKICAic2FmZXR5IjogewogICAgImVuIjogIlNhZmV0eSIsCiAgICAiaXQiOiAiU2ljdXJlenphIgogIH0sCiAgIm1vZGVscyI6IHsKICAgICJlbiI6ICJUcmlhbCBtb2RlbHMiLAogICAgIml0IjogIk1vZGVsbGkgZGkgc3R1ZGlvIgogIH0sCiAgInN0cmF0ZWd5IjogewogICAgImVuIjogIlN0cmF0ZWd5ICYgY2xhc3NpZmljYXRpb24iLAogICAgIml0IjogIlN0cmF0ZWdpYSBlIGNsYXNzaWZpY2F6aW9uZSIKICB9LAogICJjZXJ0IjogewogICAgImVuIjogIkNlcnRpZmljYXRpb24iLAogICAgIml0IjogIkNlcnRpZmljYXppb25lIgogIH0sCiAgImFmdGVyIjogewogICAgImVuIjogIkFmdGVyIG1hcmtldCIsCiAgICAiaXQiOiAiUG9zdC1jb21tZXJjaWFsaXp6YXppb25lIgogIH0sCiAgImludGwiOiB7CiAgICAiZW4iOiAiSW50ZXJuYXRpb25hbCIsCiAgICAiaXQiOiAiSW50ZXJuYXppb25hbGUiCiAgfSwKICAiY2FyZSI6IHsKICAgICJlbiI6ICJDYXJlIGRlbGl2ZXJ5IiwKICAgICJpdCI6ICJBc3Npc3RlbnphIGFpIHBhemllbnRpIgogIH0sCiAgImRkYXRhIjogewogICAgImVuIjogIkRhdGEgJiBkZXZpY2VzIiwKICAgICJpdCI6ICJEYXRpIGUgZGlzcG9zaXRpdmkiCiAgfSwKICAiZm91bmQiOiB7CiAgICAiZW4iOiAiRGlnaXRhbCBmb3VuZGF0aW9ucyIsCiAgICAiaXQiOiAiSW5mcmFzdHJ1dHR1cmEgZGlnaXRhbGUiCiAgfSwKICAicXN5cyI6IHsKICAgICJlbiI6ICJRdWFsaXR5IHN5c3RlbSIsCiAgICAiaXQiOiAiU2lzdGVtYSBxdWFsaXTDoCIKICB9LAogICJ2YWxpZCI6IHsKICAgICJlbiI6ICJWYWxpZGF0aW9uIiwKICAgICJpdCI6ICJDb252YWxpZGEiCiAgfSwKICAiaW5zcCI6IHsKICAgICJlbiI6ICJJbnNwZWN0aW9uIiwKICAgICJpdCI6ICJJc3BlemlvbmkiCiAgfQp9OwoKY29uc3QgREFUQV9GTE9XUyA9IFsKICB7CiAgICAicGF0aCI6IFsKICAgICAgImNyIiwKICAgICAgImRoIgogICAgXSwKICAgICJ0aXRsZSI6IHsKICAgICAgIml0IjogIkRhbCBwcm90b2NvbGxvIGFpIGRhdGkiLAogICAgICAiZW4iOiAiRnJvbSBwcm90b2NvbCB0byBkYXRhIgogICAgfSwKICAgICJ0ZXh0IjogewogICAgICAiaXQiOiAiQ2nDsiBjaGUgPHN0cm9uZz5XZTQgQ2xpbmljYWwgUmVzZWFyY2g8L3N0cm9uZz4gZGVmaW5pc2NlIG5lbCBwcm90b2NvbGxvIGRpdmVudGEgZUNSRiwgZVBSTyBlIG1vbml0b3JhZ2dpbyBkYSByZW1vdG8gc3VsbGUgcGlhdHRhZm9ybWUgYUNoaXJhbCBkaSA8c3Ryb25nPldlNCBEaWdpdGFsIEhlYWx0aDwvc3Ryb25nPiwgc2VuemEgaW5zZXJpcmUgaSBkYXRpIGR1ZSB2b2x0ZS4iLAogICAgICAiZW4iOiAiV2hhdCA8c3Ryb25nPldlNCBDbGluaWNhbCBSZXNlYXJjaDwvc3Ryb25nPiBkZXNpZ25zIGludG8gdGhlIHByb3RvY29sIGJlY29tZXMgZUNSRnMsIGVQUk8gYW5kIHJlbW90ZSBtb25pdG9yaW5nIGluc2lkZSB0aGUgYUNoaXJhbCBwbGF0Zm9ybXMgb2YgPHN0cm9uZz5XZTQgRGlnaXRhbCBIZWFsdGg8L3N0cm9uZz4g4oCUIG5vIGRvdWJsZSBkYXRhIGVudHJ5LiIKICAgIH0KICB9LAogIHsKICAgICJwYXRoIjogWwogICAgICAiZGgiLAogICAgICAicmVnIgogICAgXSwKICAgICJ0aXRsZSI6IHsKICAgICAgIml0IjogIkRhbGxlIGV2aWRlbnplIGFsIGRvc3NpZXIiLAogICAgICAiZW4iOiAiRnJvbSBldmlkZW5jZSB0byBkb3NzaWVyIgogICAgfSwKICAgICJ0ZXh0IjogewogICAgICAiaXQiOiAiTGUgZXZpZGVuemUgZGkgcXVhbGl0w6AgZSBs4oCZYXVkaXQgdHJhaWwgZGkgPHN0cm9uZz5XZTQgRGlnaXRhbCBIZWFsdGg8L3N0cm9uZz4gKGFDaGlyYWwgQ29iYWx0KSBjb25mbHVpc2Nvbm8gZGlyZXR0YW1lbnRlIG5laSBkb3NzaWVyIGUgbmVsIGZhc2NpY29sbyB0ZWNuaWNvIGRpIDxzdHJvbmc+V2U0IFJlZ3VsYXRvcnk8L3N0cm9uZz4uIiwKICAgICAgImVuIjogIlRoZSBxdWFsaXR5IGV2aWRlbmNlIGFuZCBhdWRpdCB0cmFpbCBmcm9tIDxzdHJvbmc+V2U0IERpZ2l0YWwgSGVhbHRoPC9zdHJvbmc+IChhQ2hpcmFsIENvYmFsdCkgZmVlZCBkaXJlY3RseSBpbnRvIHRoZSBkb3NzaWVycyBhbmQgdGVjaG5pY2FsIGZpbGUgb2YgPHN0cm9uZz5XZTQgUmVndWxhdG9yeTwvc3Ryb25nPi4iCiAgICB9CiAgfSwKICB7CiAgICAicGF0aCI6IFsKICAgICAgImNyIiwKICAgICAgInJlZyIKICAgIF0sCiAgICAidGl0bGUiOiB7CiAgICAgICJpdCI6ICJEYWxsYSBjbGluaWNhIGFsIG1lcmNhdG8iLAogICAgICAiZW4iOiAiRnJvbSBjbGluaWMgdG8gbWFya2V0IgogICAgfSwKICAgICJ0ZXh0IjogewogICAgICAiaXQiOiAiTOKAmWV2aWRlbnphIGNsaW5pY2EgcmFjY29sdGEgZGEgPHN0cm9uZz5XZTQgQ2xpbmljYWwgUmVzZWFyY2g8L3N0cm9uZz4gKElTTyAxNDE1NSkgw6ggbGEgYmFzZSBkZWxsYSBzdHJhdGVnaWEgcmVnb2xhdG9yaWEgZ2VzdGl0YSBkYSA8c3Ryb25nPldlNCBSZWd1bGF0b3J5PC9zdHJvbmc+LiIsCiAgICAgICJlbiI6ICJUaGUgY2xpbmljYWwgZXZpZGVuY2UgZ2F0aGVyZWQgYnkgPHN0cm9uZz5XZTQgQ2xpbmljYWwgUmVzZWFyY2g8L3N0cm9uZz4gKElTTyAxNDE1NSkgdW5kZXJwaW5zIHRoZSByZWd1bGF0b3J5IHN0cmF0ZWd5IGhhbmRsZWQgYnkgPHN0cm9uZz5XZTQgUmVndWxhdG9yeTwvc3Ryb25nPi4iCiAgICB9CiAgfQpdOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgYUNoaXJhbCBOYXZpZ2F0b3Ig4oCUIExpbmd1YSBhdHRpdmEgZSB0ZXN0aSBkZWxsJ2ludGVyZmFjY2lhIChJVCAvIEVOKQogICBMYSBsaW5ndWEgc2VndWUgcXVlbGxhIGRlbGxhIHBhZ2luYSBXb3JkUHJlc3M6IFRyYW5zbGF0ZVByZXNzIGltcG9zdGEKICAgPGh0bWwgbGFuZz0iZW4tLi4uIj4gZSBpbCBwcmVmaXNzbyAvZW4vIG5lbGwnVVJMLiA\/bGFuZz1lbiBmb3J6YSBsJ2luZ2xlc2UuCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpjb25zdCBMQU5HID0gZGV0ZWN0TGFuZ3VhZ2UoKTsKCi8qIE9yZGluZTogP2xhbmc9IChhbnRlcHJpbWEpIMK3IGxpbmd1YSBkaSBUcmFuc2xhdGVQcmVzcyBwYXNzYXRhIGRhbGxvIHNob3J0Y29kZSAoZGF0YS1sYW5nKSDCtwogICA8aHRtbCBsYW5nPiDCtyBwcmVmaXNzbyAvaXQvIGRlbGwnVVJMLiBTdWwgc2l0byBsJ2luZ2xlc2Ugw6ggbGEgbGluZ3VhIHByaW5jaXBhbGUgKHNlbnphIHByZWZpc3NvKSAqLwpmdW5jdGlvbiBkZXRlY3RMYW5ndWFnZSgpIHsKICAgIGNvbnN0IGZvcmNlZCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCdsYW5nJyk7CiAgICBjb25zdCByb290ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA\/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ZTQtbmF2aWdhdG9yJykgOiBudWxsOwogICAgY29uc3QgZnJvbVNlcnZlciA9IHJvb3QgPyByb290LmRhdGFzZXQubGFuZyB8fCAnJyA6ICcnOwogICAgY29uc3QgcGFnZUxhbmcgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgOiAnJzsKICAgIGNvbnN0IGZyb21QYXRoID0gL15cL2l0KFwvfCQpLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSB8fCAnJykgPyAnaXQnIDogJyc7CiAgICBjb25zdCBjb2RlID0gKGZvcmNlZCB8fCBmcm9tU2VydmVyIHx8IHBhZ2VMYW5nIHx8IGZyb21QYXRoIHx8ICdlbicpLnNsaWNlKDAsIDIpLnRvTG93ZXJDYXNlKCk7CiAgICByZXR1cm4gY29kZSA9PT0gJ2l0JyA\/ICdpdCcgOiAnZW4nOwp9CgovKiBJIHZhbG9yaSB7IG9uZSwgbWFueSB9IHNvbm8gcGx1cmFsaTogdChrZXksIHsgbiB9KSBzY2VnbGllIGxhIGZvcm1hIGdpdXN0YSAqLwpjb25zdCBTVFJJTkdTID0gewogICAgaXQ6IHsKICAgICAgICAnbmF2LmxhYmVsJzogJ1Bhc3NpIGRlbCBjb25maWd1cmF0b3JlJywKICAgICAgICAnbmF2LnN0ZXAxJzogJ1Byb2ZpbG8nLAogICAgICAgICduYXYuc3RlcDQnOiAnUmllcGlsb2dvIGUgY29udGF0dG8nLAoKICAgICAgICAnc3RlcDEuZXllYnJvdyc6ICdQYXNzbyAxIGRpIDQgwrcgUHJvZmlsbycsCiAgICAgICAgJ3N0ZXAxLnRpdGxlJzogJ0NoZSB0aXBvIGRpIDxzdHJvbmc+b3JnYW5penphemlvbmU8L3N0cm9uZz4gc2VpPycsCiAgICAgICAgJ3N0ZXAxLm9yJzogJ29wcHVyZScsCiAgICAgICAgJ3N0ZXAxLm5vUHJvZmlsZSc6ICdOZXNzdW4gcHJvZmlsbycsCiAgICAgICAgJ3N0ZXAxLmluZm9FbXB0eSc6ICdTY2VnbGkgdW4gcHJvZmlsbyBwZXIgY29udGludWFyZS4nLAogICAgICAgICdzdGVwMS5uZXh0JzogJ0NvbnRpbnVhJywKCiAgICAgICAgJ3N0ZXAyLnNlYXJjaENsZWFyJzogJ0NhbmNlbGxhIHJpY2VyY2EnLAogICAgICAgICdzdGVwMi5maWx0ZXJBbGwnOiAnVHV0dGknLAogICAgICAgICdzdGVwMi5maWx0ZXJMYWJlbCc6ICdGaWx0cmEgaSByZXF1aXNpdGknLAogICAgICAgICdzdGVwMy5hY2hpcmFsJzogJ1BpYXR0YWZvcm1lIGFDaGlyYWwgY29pbnZvbHRlJywKICAgICAgICAnc3RlcDIuY2xlYXJBbGwnOiAnQXp6ZXJhIHNlbGV6aW9uZScsCiAgICAgICAgJ3N0ZXAyLmdyb3VwQ291bnQnOiAne259IHNlbGV6aW9uYXRpIHN1IHt0b3RhbH0nLAogICAgICAgICdzdGVwMi5yZXNldEZpbHRlcnMnOiAnQXp6ZXJhIHJpY2VyY2EnLAogICAgICAgICdzdGVwMi5wcmV2JzogJ0NhbWJpYSBwcm9maWxvJywKCiAgICAgICAgJ3N0ZXAzLnJlbW92ZSc6ICdSaW11b3ZpJywKICAgICAgICAnc3RlcDMuZmxvd1RvJzogJ3ZlcnNvJywKICAgICAgICAnc3RlcDMuY29tcGxpYW5jZVRpdGxlJzogJ05vcm1hdGl2ZSBjb3BlcnRlJywKICAgICAgICAnc3RlcDMuY29tcGxpYW5jZUxlYWQnOiAnU3RhbmRhcmQgY2hlIHF1ZXN0YSBjb25maWd1cmF6aW9uZSB0aSBhaXV0YSBhIHJpc3BldHRhcmUuJywKICAgICAgICAnc3RlcDMubmV4dCc6ICdSaWNoaWVkaSBjb25maWd1cmF6aW9uZScsCgogICAgICAgICdzdGVwNC5leWVicm93JzogJ1Bhc3NvIDQgZGkgNCDCtyBSaWVwaWxvZ28nLAogICAgICAgICdzdGVwNC50aXRsZSc6ICdSaWVwaWxvZ28gZSA8c3Ryb25nPnJpY2hpZXN0YTwvc3Ryb25nPicsCiAgICAgICAgJ3N0ZXA0LnN1bW1hcnlUaXRsZSc6ICdMYSB0dWEgY29uZmlndXJhemlvbmUnLAogICAgICAgICdzdGVwNC5lZGl0JzogJ01vZGlmaWNhJywKICAgICAgICAnc3RlcDQucHJvZmlsZSc6ICdQcm9maWxvIHNlbGV6aW9uYXRvJywKICAgICAgICAnc3RlcDQuY29tcGxpYW5jZSc6ICdRdWFkcm8gbm9ybWF0aXZvJywKICAgICAgICAnc3RlcDQuc2hvd01vcmUnOiB7IG9uZTogJyt7bn0gYWx0cm8nLCBtYW55OiAnK3tufSBhbHRyaScgfSwKICAgICAgICAnc3RlcDQuc2hvd0xlc3MnOiAnTW9zdHJhIG1lbm8nLAogICAgICAgICdzdGVwNC5jb3B5JzogJ0NvcGlhIHRlc3RvJywKICAgICAgICAnc3RlcDQucHJpbnQnOiAnU3RhbXBhIC8gUERGJywKICAgICAgICAnc3RlcDQuZm9ybVRpdGxlJzogJ1JpY2hpZWRpIHVuYSBwcm9wb3N0YScsCiAgICAgICAgJ3N0ZXA0LmZyZWVDb25maWcnOiAnQ29uZmlndXJhemlvbmUgbGliZXJhJywKICAgICAgICAnc3RlcDQuZm9ybU1pc3NpbmcnOiAnSWwgbW9kdWxvIGRpIGNvbnRhdHRvIG5vbiDDqCBhbmNvcmEgY29uZmlndXJhdG8uJywKCiAgICAgICAgJ3RpZXIuY29yZS5sYWJlbCc6ICdDb3JlJywKCiAgICAgICAgJ3RvYXN0Lm5lZWRQcm9maWxlJzogJ1NlbGV6aW9uYSBwcmltYSB1biBwcm9maWxvLicsCiAgICAgICAgJ3RvYXN0LmNsZWFyZWQnOiAnU2VsZXppb25lIGF6emVyYXRhLicsCiAgICAgICAgJ3RvYXN0LmNvcGllZCc6ICdTY2hlZGEgY29waWF0YSBuZWdsaSBhcHB1bnRpLicsCiAgICAgICAgJ3RvYXN0LmNvcHlGYWlsZWQnOiAnQ29waWEgbm9uIHJpdXNjaXRhOiB1c2EgwqtTdGFtcGEgLyBQREbCuy4nLAoKICAgICAgICAncHJpbnQucHJvZmlsZSc6ICdQcm9maWxvJywKICAgICAgICAncHJpbnQua3BpQ29tcGxpYW5jZSc6IHsgb25lOiAnbm9ybWF0aXZhIGNvcGVydGEnLCBtYW55OiAnbm9ybWF0aXZlIGNvcGVydGUnIH0sCiAgICAgICAgJ3ByaW50LmNvbXBsaWFuY2VMYWJlbCc6ICdOb3JtYXRpdmUgY2hlIHF1ZXN0YSBjb25maWd1cmF6aW9uZSB0aSBhaXV0YSBhIHJpc3BldHRhcmUnLAogICAgICAgICdwcmludC5jb2xCcmllZic6ICdJbiBicmV2ZScsCiAgICAgICAgJ3ByaW50Lm5leHRUaXRsZSc6ICdQcm9zc2ltbyBwYXNzbzonLAogICAgICAgICdwcmludC5kaXNjbGFpbWVyJzogJ0RvY3VtZW50byBwcmVsaW1pbmFyZSwgbm9uIHZpbmNvbGFudGUuJywKICAgICAgICAncHJpbnQucGFnZSc6ICdQYWdpbmEnLAogICAgICAgICdwcmludC5vZic6ICdkaScsCiAgICAgICAgJ3ByaW50LnJlb3Blbic6ICdSaWFwcmkgcXVlc3RhIGNvbmZpZ3VyYXppb25lOiB7dXJsfScsCgogICAgICAgICd0ZXh0LnByb2ZpbGUnOiAnUHJvZmlsbycsCiAgICAgICAgJ3RleHQuZGF0ZSc6ICdEYXRhJywKICAgICAgICAndGV4dC5jb21wbGlhbmNlJzogJ05vcm1hdGl2ZSBjb3BlcnRlJywKICAgICAgICAnc3RlcDIudGl0bGUnOiAiUXVhbGkgPHN0cm9uZz5yZXF1aXNpdGk8L3N0cm9uZz4gdGkgc2Vydm9ubz8iLAogICAgICAgICdzdGVwMy5mbG93V2hvbGVTdGFjayc6ICJzdSB0dXR0byBpbCBwcm9nZXR0byIsCiAgICAgICAgJ3N0ZXA0LmxlYWQnOiAiQ29udHJvbGxhIGxhIGNvbmZpZ3VyYXppb25lIGUgaW52aWFsYTogdW5vIHNwZWNpYWxpc3RhIFdlNCB0aSByaWNvbnRhdHRhIGVudHJvIHVuIGdpb3JubyBsYXZvcmF0aXZvLiBOb24gw6ggdW4gb3JkaW5lIG7DqSB1biBpbXBlZ25vLiIsCiAgICAgICAgJ2NhdC5zdHVkeSc6ICJTdHVkaW8gY2xpbmljbyIsCiAgICAgICAgJ2NhdC5tYXJrZXQnOiAiQWNjZXNzbyBhbCBtZXJjYXRvIiwKICAgICAgICAnY2F0LmRpZ2l0YWwnOiAiRGlnaXRhbCBoZWFsdGgiLAogICAgICAgICdjYXQucXVhbGl0eSc6ICJRdWFsaXTDoCBlIGNvbmZvcm1pdMOgIiwKICAgICAgICAncHJpbnQudGl0bGUnOiAiUGlhbm8gZGVpIHNlcnZpemkgV2U0IEhlYWx0aGNhcmUiLAogICAgICAgICdwcmludC5rcGlGbG93cyc6IHsib25lIjogImNvbGxhYm9yYXppb25lIiwgIm1hbnkiOiAiY29sbGFib3JhemlvbmkifSwKICAgICAgICAncHJpbnQuZmxvd3NUaXRsZSc6ICJDb21lIGxhdm9yYW5vIGluc2llbWUiLAogICAgICAgICdwcmludC5uZXh0VGV4dCc6ICJJbnZpYSBxdWVzdGEgY29uZmlndXJhemlvbmUgZGFsIE5hdmlnYXRvciBzdSB3ZTRoZWFsdGhjYXJlLmNvbS9uYXZpZ2F0b3IgbyBzY3JpdmkgYSBpbmZvQHdlNGhlYWx0aGNhcmUuY29tOiB1bm8gc3BlY2lhbGlzdGEgdGkgcmljb250YXR0YSBlbnRybyB1biBnaW9ybm8gbGF2b3JhdGl2by4iLAogICAgICAgICd0ZXh0LnRpdGxlJzogIldlNCBIZWFsdGhjYXJlIFNlcnZpY2VzIE5hdmlnYXRvciDigJQgUGlhbm8gZGVsIHByb2dldHRvIiwKICAgICAgICAndGV4dC5mb290ZXInOiAiR2VuZXJhdG8gY29uIFdlNCBTZXJ2aWNlcyBOYXZpZ2F0b3IgKGh0dHBzOi8vd2U0aGVhbHRoY2FyZS5jb20vbmF2aWdhdG9yLykiLAogICAgICAgICd1bml0LnJlcXVpcmVtZW50cyc6IHsib25lIjogIntufSByZXF1aXNpdG8iLCAibWFueSI6ICJ7bn0gcmVxdWlzaXRpIn0sCiAgICAgICAgJ3VuaXQubmVlZGVkUGxhdGZvcm1zJzogeyJvbmUiOiAie259IHNlcnZpemlvIFdlNCIsICJtYW55IjogIntufSBzZXJ2aXppIFdlNCJ9LAogICAgICAgICduYXYuc3RlcDInOiAiUmVxdWlzaXRpIiwKICAgICAgICAnbmF2LnN0ZXAzJzogIlNlcnZpemkgV2U0IiwKICAgICAgICAnaW50cm8uZXllYnJvdyc6ICJTZXJ2aWNlcyBOYXZpZ2F0b3IiLAogICAgICAgICdpbnRyby50aXRsZSc6ICJEYWxsYSByaWNlcmNhIGFsIG1lcmNhdG8sIDxzdHJvbmc+aWwgcGVyY29yc28gZ2l1c3RvIHBlciBpbCB0dW8gcHJvZ2V0dG88L3N0cm9uZz4iLAogICAgICAgICdpbnRyby5sZWFkJzogIlJpY2VyY2EgY2xpbmljYSwgYWZmYXJpIHJlZ29sYXRvcmkgZSBkaWdpdGFsIGhlYWx0aCBpbiB1biB1bmljbyBlY29zaXN0ZW1hLiBSaXNwb25kaSBhIHBvY2hlIGRvbWFuZGU6IHRpIG1vc3RyaWFtbyBxdWFsaSBzZXJ2aXppIFdlNCB0aSBzZXJ2b25vLCBjb21lIGxhdm9yYW5vIGluc2llbWUgZSBxdWFsaSBub3JtYXRpdmUgY29wcm9uby4iLAogICAgICAgICdzdGVwMS5sZWFkJzogIlNjZWdsaSBpbCBwcm9maWxvIHBpw7kgdmljaW5vIGFsbGEgdHVhIHJlYWx0w6A6IHRpIHByZXBhcmlhbW8gdW5hIHNlbGV6aW9uZSBpbml6aWFsZSBkaSByZXF1aXNpdGksIGNoZSBwb3RyYWkgY2FtYmlhcmUgYWwgcGFzc28gc3VjY2Vzc2l2by4iLAogICAgICAgICdzdGVwMS5ub1Byb2ZpbGVEZXNjJzogIlBhcnRpIGRhIHplcm8gZSBzY2VnbGkgdHUgaSByZXF1aXNpdGkuIiwKICAgICAgICAnc3RlcDEucmVhZHknOiB7Im9uZSI6ICJ7bn0gcmVxdWlzaXRvIHByb250byIsICJtYW55IjogIntufSByZXF1aXNpdGkgcHJvbnRpIn0sCiAgICAgICAgJ3N0ZXAxLmluZm9GcmVlJzogIjxzdHJvbmc+TmVzc3VuIHByb2ZpbG88L3N0cm9uZz46IHNjZWdsaWVyYWkgdHUgaSByZXF1aXNpdGkiLAogICAgICAgICdzdGVwMS5pbmZvUHJvZmlsZSc6IHsib25lIjogIjxzdHJvbmc+e25hbWV9PC9zdHJvbmc+LCB7bn0gcmVxdWlzaXRvIHNlbGV6aW9uYXRvIiwgIm1hbnkiOiAiPHN0cm9uZz57bmFtZX08L3N0cm9uZz4sIHtufSByZXF1aXNpdGkgc2VsZXppb25hdGkifSwKICAgICAgICAnc3RlcDIuZXllYnJvdyc6ICJQYXNzbyAyIGRpIDQgwrcgUmVxdWlzaXRpIiwKICAgICAgICAnc3RlcDIubGVhZFByb2ZpbGUnOiB7Im9uZSI6ICJQZXIgaWwgcHJvZmlsbyA8c3Ryb25nPntuYW1lfTwvc3Ryb25nPiBhYmJpYW1vIGdpw6Agc2VsZXppb25hdG8ge259IHJlcXVpc2l0bzogYWdnaXVuZ2kgbyB0b2dsaSBxdWVsbGkgY2hlIHRpIHNlcnZvbm8uIiwgIm1hbnkiOiAiUGVyIGlsIHByb2ZpbG8gPHN0cm9uZz57bmFtZX08L3N0cm9uZz4gYWJiaWFtbyBnacOgIHNlbGV6aW9uYXRvIHtufSByZXF1aXNpdGk6IGFnZ2l1bmdpIG8gdG9nbGkgcXVlbGxpIGNoZSB0aSBzZXJ2b25vLiJ9LAogICAgICAgICdzdGVwMi5sZWFkRnJlZSc6ICJTZWxlemlvbmEgY2nDsiBkaSBjdWkgaGFpIGJpc29nbm86IHN0dWRpbyBjbGluaWNvLCBhY2Nlc3NvIGFsIG1lcmNhdG8sIGRpZ2l0YWwgaGVhbHRoLCBxdWFsaXTDoCBlIGNvbmZvcm1pdMOgLiIsCiAgICAgICAgJ3N0ZXAyLnNlYXJjaExhYmVsJzogIkNlcmNhIHVuIHJlcXVpc2l0byIsCiAgICAgICAgJ3N0ZXAyLnNlYXJjaFBsYWNlaG9sZGVyJzogIkNlcmNhIGF0dGl2aXTDoCwgbm9ybWEsIHBhcm9sYSBjaGlhdmXigKYiLAogICAgICAgICdzdGVwMi5hZGRSZWNvbW1lbmRlZCc6IHsib25lIjogIkFnZ2l1bmdpIHtufSBjb25zaWdsaWF0byIsICJtYW55IjogIkFnZ2l1bmdpIHtufSBjb25zaWdsaWF0aSJ9LAogICAgICAgICdzdGVwMi5yZWNvbW1lbmRlZCc6ICJDb25zaWdsaWF0byIsCiAgICAgICAgJ3doby5sZWdlbmRJbnRybyc6ICJTb3R0byBvZ25pIHNlcnZpemlvIHRyb3ZpIGxlIGRpdmlzaW9uaSBXZTQgY29pbnZvbHRlOiIsCiAgICAgICAgJ3doby5sZWdlbmRMZWFkJzogImd1aWRhIGlsIHNlcnZpemlvIiwKICAgICAgICAnd2hvLmxlZ2VuZFN1cHBvcnQnOiAibG8gYWZmaWFuY2EiLAogICAgICAgICd3aG8ubGVhZCc6ICJndWlkYSIsCiAgICAgICAgJ3doby5sZWFkSGVhZCc6ICJHdWlkYSIsCiAgICAgICAgJ3doby5zdXBwb3J0SGVhZCc6ICJBZmZpYW5jYSIsCiAgICAgICAgJ3doby5zdXBwb3J0JzogImFmZmlhbmNhIiwKICAgICAgICAnc3RlcDIubm9SZXN1bHRzJzogIk5lc3N1biByZXF1aXNpdG8gY29ycmlzcG9uZGUgYSDigJx7cX3igJ0uIiwKICAgICAgICAnc3RlcDIucHJldmlld0xhYmVsJzogIkFudGVwcmltYSBkZWkgc2Vydml6aSBXZTQiLAogICAgICAgICdzdGVwMi5wcmV2aWV3VGl0bGUnOiAiU2Vydml6aSBXZTQgY29pbnZvbHRpIiwKICAgICAgICAnc3RlcDIucHJldmlld0VtcHR5JzogIk5lc3N1biByZXF1aXNpdG8gc2VsZXppb25hdG8uIiwKICAgICAgICAnc3RlcDIuaW5mb0VtcHR5JzogIlNlbGV6aW9uYSBhbG1lbm8gdW4gcmVxdWlzaXRvLiIsCiAgICAgICAgJ3N0ZXAyLm5leHQnOiAiVmVkaSBpIHNlcnZpemkiLAogICAgICAgICdzdGVwMy5leWVicm93JzogIlBhc3NvIDMgZGkgNCDCtyBTZXJ2aXppIFdlNCIsCiAgICAgICAgJ3N0ZXAzLnRpdGxlJzogIkkgPHN0cm9uZz5zZXJ2aXppIFdlNDwvc3Ryb25nPiBwZXIgaWwgdHVvIHByb2dldHRvIiwKICAgICAgICAnc3RlcDMubGVhZCc6IHsib25lIjogIkVjY28gY2hpIGd1aWRhIGlsIHR1byByZXF1aXNpdG8gZSBjaGkgbG8gYWZmaWFuY2E6IG9nbmkgc2Vydml6aW8gV2U0IGNvaW52b2x0byBsYXZvcmEgY29uIGdsaSBhbHRyaSBjb21lIHVu4oCZdW5pY2Egc3F1YWRyYS4iLCAibWFueSI6ICJFY2NvIGNoaSBndWlkYSBpIHR1b2kge259IHJlcXVpc2l0aSBlIGNoaSBsaSBhZmZpYW5jYTogb2duaSBzZXJ2aXppbyBXZTQgY29pbnZvbHRvIGxhdm9yYSBjb24gZ2xpIGFsdHJpIGNvbWUgdW7igJl1bmljYSBzcXVhZHJhLiJ9LAogICAgICAgICdzdGVwMy5lbXB0eSc6ICJOZXNzdW4gc2Vydml6aW8gdHJvdmF0bzogc2VsZXppb25hIGFsbWVubyB1biByZXF1aXNpdG8gYWwgcGFzc28gMi4iLAogICAgICAgICdzdGVwMy5zZXJ2ZXNGb3InOiAiUmVxdWlzaXRpIHNlZ3VpdGkiLAogICAgICAgICdzdGVwMy5zdHJlbmd0aGVucyc6ICJSZXF1aXNpdGkgc2VndWl0aSIsCiAgICAgICAgJ3N0ZXAzLnNob3dPcHRpb25hbCc6IHsib25lIjogIk1vc3RyYSB7bn0gYWx0cm8gc2Vydml6aW8gY2hlIGFmZmlhbmNhIiwgIm1hbnkiOiAiTW9zdHJhIHtufSBhbHRyaSBzZXJ2aXppIGNoZSBhZmZpYW5jYW5vIn0sCiAgICAgICAgJ3N0ZXAzLmhpZGVPcHRpb25hbCc6IHsib25lIjogIk5hc2NvbmRpIHtufSBzZXJ2aXppbyBjaGUgYWZmaWFuY2EiLCAibWFueSI6ICJOYXNjb25kaSB7bn0gc2Vydml6aSBjaGUgYWZmaWFuY2FubyJ9LAogICAgICAgICdzdGVwMy5vcHRpb25hbE5vdGUnOiAiTm9uIHNvbm8gaW5kaXNwZW5zYWJpbGkgcGVyIGkgcmVxdWlzaXRpIHNjZWx0aSwgbWEgY29udHJpYnVpc2Nvbm8gYSByZWFsaXp6YXJsaS4iLAogICAgICAgICdzdGVwMy5hZGRQbGF0Zm9ybU9ubHknOiAiQWdnaXVuZ2kgc29sbyBpbCBzZXJ2aXppbyIsCiAgICAgICAgJ3N0ZXAzLmZsb3dzVGl0bGUnOiAiQ29tZSBsYXZvcmFubyBpbnNpZW1lIiwKICAgICAgICAnc3RlcDMuZmxvd3NMZWFkJzogIkxlIGRpdmlzaW9uaSBub24gc2kgcGFzc2FubyBkb2N1bWVudGk6IDxzdHJvbmc+Y29uZGl2aWRvbm8gZ2xpIHN0ZXNzaSBkYXRpIGNvbnZhbGlkYXRpPC9zdHJvbmc+LiIsCiAgICAgICAgJ3N0ZXAzLmZsb3dzRW1wdHknOiAiTGEgdHVhIHNlbGV6aW9uZSDDqCBnZXN0aXRhIGluIGdyYW4gcGFydGUgZGEgPHN0cm9uZz57bmFtZX08L3N0cm9uZz4uIEFuY2hlIHF1aSB2YWxlIGlsIHZhbnRhZ2dpbyBXZTQ6IDxzdHJvbmc+dW4gdW5pY28gc2lzdGVtYSBxdWFsaXTDoCBlIHVuYSBzb2xhIGdvdmVybmFuY2UgZGVpIGRhdGk8L3N0cm9uZz4gZGlldHJvIG9nbmkgYXR0aXZpdMOgLiIsCiAgICAgICAgJ3N0ZXAzLmZsb3dzRW5kJzogIklsIHJpc3VsdGF0bzogdW4gdW5pY28gZmx1c3NvIGNvbnRpbnVvIDxzdHJvbmc+ZGFsbOKAmWlkZWEgYWwgbWVyY2F0bzwvc3Ryb25nPiwgc2VuemEgY29zdGkgZGkgaW50ZWdyYXppb25lIHRyYSBmb3JuaXRvcmkuIiwKICAgICAgICAnc3RlcDMuaW5mbyc6IHsib25lIjogIjxzdHJvbmc+e259IHNlcnZpemlvIFdlNCBuZWxsYSBjb25maWd1cmF6aW9uZTwvc3Ryb25nPiDCtyB7Y30gbm9ybWF0aXZlIiwgIm1hbnkiOiAiPHN0cm9uZz57bn0gc2Vydml6aSBXZTQgbmVsbGEgY29uZmlndXJhemlvbmU8L3N0cm9uZz4gwrcge2N9IG5vcm1hdGl2ZSJ9LAogICAgICAgICdzdGVwMy5wcmV2JzogIk1vZGlmaWNhIHJlcXVpc2l0aSIsCiAgICAgICAgJ3N0ZXA0LmJhY2snOiAiVG9ybmEgYWkgc2Vydml6aSIsCiAgICAgICAgJ3N0ZXA0LnBsYXRmb3Jtcyc6ICJTZXJ2aXppIFdlNCBjb25zaWdsaWF0aSIsCiAgICAgICAgJ3N0ZXA0LnJlcXVpcmVtZW50cyc6ICJSZXF1aXNpdGkgc2VsZXppb25hdGkiLAogICAgICAgICd0aWVyLmNvcmUudGl0bGUnOiAiQ2hpIGd1aWRhIGlsIHByb2dldHRvIiwKICAgICAgICAndGllci5jb3JlLm5vdGUnOiAiZ3VpZGFubyBsYSBtYWdnaW9yIHBhcnRlIGRlaSByZXF1aXNpdGkgc2NlbHRpIiwKICAgICAgICAndGllci5jb21wbGVtZW50LmxhYmVsJzogIkNvbXBsZXRhbWVudG8iLAogICAgICAgICd0aWVyLmNvbXBsZW1lbnQudGl0bGUnOiAiR3VpZGFubyBhbHRyaSByZXF1aXNpdGkiLAogICAgICAgICd0aWVyLmNvbXBsZW1lbnQubm90ZSc6ICJzb25vIHJlc3BvbnNhYmlsaSBkaSB1bmEgcGFydGUgZGVpIHJlcXVpc2l0aSBzY2VsdGkiLAogICAgICAgICd0aWVyLmFkZGVkLmxhYmVsJzogIkFnZ2l1bnRvIiwKICAgICAgICAndGllci5hZGRlZC50aXRsZSc6ICJBZ2dpdW50aSBkYSB0ZSIsCiAgICAgICAgJ3RpZXIuYWRkZWQubm90ZSc6ICJzZXJ2aXppIGNoZSBoYWkgaW5jbHVzbyBhIG1hbm8gbmVsbGEgY29uZmlndXJhemlvbmUiLAogICAgICAgICd0aWVyLm9wdGlvbmFsLmxhYmVsJzogIkFmZmlhbmNhIiwKICAgICAgICAndGllci5vcHRpb25hbC50aXRsZSc6ICJUaSBhZmZpYW5jYW5vIiwKICAgICAgICAndGllci5vcHRpb25hbC5ub3RlJzogIm5vbiBndWlkYW5vIG5lc3N1biByZXF1aXNpdG8gc2NlbHRvLCBtYSBjb250cmlidWlzY29ubyBhZCBhbGN1bmkiLAogICAgICAgICd0b2FzdC5uZWVkUmVxdWlyZW1lbnQnOiAiU2VsZXppb25hIGFsbWVubyB1biByZXF1aXNpdG8gcGVyIHByb3NlZ3VpcmUuIiwKICAgICAgICAndG9hc3QucHJvZmlsZUNoYW5nZWQnOiAiUHJvZmlsbyBjYW1iaWF0bzogcmVxdWlzaXRpIGFnZ2lvcm5hdGkgcGVyIHtuYW1lfS4iLAogICAgICAgICd0b2FzdC5wcm9maWxlUmVtb3ZlZCc6ICJQcm9maWxvIHJpbW9zc286IHNjZWdsaWVyYWkgdHUgaSByZXF1aXNpdGkuIiwKICAgICAgICAndG9hc3QucmVjb21tZW5kZWRBZGRlZCc6IHsib25lIjogIntufSByZXF1aXNpdG8gY29uc2lnbGlhdG8gYWdnaXVudG8uIiwgIm1hbnkiOiAie259IHJlcXVpc2l0aSBjb25zaWdsaWF0aSBhZ2dpdW50aS4ifSwKICAgICAgICAndG9hc3QucGxhdGZvcm1BZGRlZCc6ICJ7bmFtZX0gYWdnaXVudG8gYWxsYSBjb25maWd1cmF6aW9uZS4iLAogICAgICAgICdwcmludC5pbnRybyc6ICJRdWVzdGEgc2NoZWRhIHJpYXNzdW1lIGkgcmVxdWlzaXRpIGNoZSBoYWkgc2NlbHRvIG5lbCBOYXZpZ2F0b3IsIGkgc2Vydml6aSBXZTQgSGVhbHRoY2FyZSBjaGUgbGkgY29wcm9ubywgY29tZSBsYXZvcmFubyBpbnNpZW1lIGUgbGUgbm9ybWF0aXZlIGNvcGVydGUuIiwKICAgICAgICAncHJpbnQua3BpUmVxdWlyZW1lbnRzJzogeyJvbmUiOiAicmVxdWlzaXRvIHNjZWx0byIsICJtYW55IjogInJlcXVpc2l0aSBzY2VsdGkifSwKICAgICAgICAncHJpbnQua3BpUGxhdGZvcm1zJzogeyJvbmUiOiAic2Vydml6aW8gV2U0IiwgIm1hbnkiOiAic2Vydml6aSBXZTQifSwKICAgICAgICAncHJpbnQucmVxVGl0bGUnOiAiSSByZXF1aXNpdGkgY2hlIGhhaSBzY2VsdG8iLAogICAgICAgICdwcmludC5yZXFMZWFkJzogIkkgcmVxdWlzaXRpIGRlbCBwcm9nZXR0bywgcmFnZ3J1cHBhdGkgcGVyIGFyZWEsIGNvbiBsZSBkaXZpc2lvbmkgV2U0IGNoZSBzZSBuZSBvY2N1cGFuby4iLAogICAgICAgICdwcmludC5jb2xSZXF1aXJlbWVudCc6ICJSZXF1aXNpdG8iLAogICAgICAgICdwcmludC5jb2xNYW5hZ2VkQnknOiAiU2Vydml6aW8gV2U0IiwKICAgICAgICAncHJpbnQucGZtVGl0bGUnOiAiSSBzZXJ2aXppIFdlNCBkZWxsYSBjb25maWd1cmF6aW9uZSIsCiAgICAgICAgJ3ByaW50LnBmbUxlYWRDb3JlJzogIlNpIHBhcnRlIGRhaSBzZXJ2aXppIDxzdHJvbmc+Y29yZTwvc3Ryb25nPiIsCiAgICAgICAgJ3ByaW50LnBmbUxlYWRDb21wbGVtZW50JzogIjsgcXVlbGxpIGRpIDxzdHJvbmc+Y29tcGxldGFtZW50bzwvc3Ryb25nPiBjb3Byb25vIGkgcmVxdWlzaXRpIGNoZSBpIGNvcmUgbGFzY2lhbm8gc2NvcGVydGkiLAogICAgICAgICdwcmludC5wZm1MZWFkQWRkZWQnOiAiOyBxdWVsbGkgPHN0cm9uZz5hZ2dpdW50aSBkYSB0ZTwvc3Ryb25nPiByYWZmb3J6YW5vIHJlcXVpc2l0aSBnacOgIGNvcGVydGkiLAogICAgICAgICdwcmludC5wZm1MZWFkRW5kJzogIi4gU290dG8gY2lhc2N1bm8gaSByZXF1aXNpdGkgY29sbGVnYXRpOiBpbiBncmFzc2V0dG8gcXVlbGxpIGNoZSBndWlkYSBkaXJldHRhbWVudGUuIiwKICAgICAgICAncHJpbnQubGlua2VkJzogIlJlcXVpc2l0aSBjb2xsZWdhdGk6IiwKICAgICAgICAndGV4dC5yZXF1aXJlbWVudHMnOiAiUmVxdWlzaXRpIHNlbGV6aW9uYXRpIiwKICAgICAgICAndGV4dC5wbGF0Zm9ybXMnOiAiU2Vydml6aSBXZTQgZGVsbGEgY29uZmlndXJhemlvbmUiLAogICAgICAgICd0ZXh0LmxpbmtlZCc6ICJSZXF1aXNpdGkgY29sbGVnYXRpIgogICAgfSwKICAgIGVuOiB7CiAgICAgICAgJ25hdi5sYWJlbCc6ICdDb25maWd1cmF0b3Igc3RlcHMnLAogICAgICAgICduYXYuc3RlcDEnOiAnUHJvZmlsZScsCiAgICAgICAgJ25hdi5zdGVwNCc6ICdTdW1tYXJ5ICYgQ29udGFjdCcsCgogICAgICAgICdzdGVwMS5leWVicm93JzogJ1N0ZXAgMSBvZiA0IMK3IFByb2ZpbGUnLAogICAgICAgICdzdGVwMS50aXRsZSc6ICdXaGF0IGtpbmQgb2YgPHN0cm9uZz5vcmdhbmlzYXRpb248L3N0cm9uZz4gYXJlIHlvdT8nLAogICAgICAgICdzdGVwMS5vcic6ICdvcicsCiAgICAgICAgJ3N0ZXAxLm5vUHJvZmlsZSc6ICdObyBwcm9maWxlJywKICAgICAgICAnc3RlcDEuaW5mb0VtcHR5JzogJ0Nob29zZSBhIHByb2ZpbGUgdG8gY29udGludWUuJywKICAgICAgICAnc3RlcDEubmV4dCc6ICdDb250aW51ZScsCgogICAgICAgICdzdGVwMi5zZWFyY2hDbGVhcic6ICdDbGVhciBzZWFyY2gnLAogICAgICAgICdzdGVwMi5hZGRSZWNvbW1lbmRlZCc6IHsgb25lOiAnQWRkIHtufSByZWNvbW1lbmRlZCcsIG1hbnk6ICdBZGQge259IHJlY29tbWVuZGVkJyB9LAogICAgICAgICdzdGVwMi5maWx0ZXJBbGwnOiAnQWxsJywKICAgICAgICAnc3RlcDIuZmlsdGVyTGFiZWwnOiAnRmlsdGVyIHJlcXVpcmVtZW50cycsCiAgICAgICAgJ3N0ZXAzLmFjaGlyYWwnOiAnYUNoaXJhbCBwbGF0Zm9ybXMgaW52b2x2ZWQnLAogICAgICAgICdzdGVwMi5jbGVhckFsbCc6ICdDbGVhciBzZWxlY3Rpb24nLAogICAgICAgICdzdGVwMi5yZWNvbW1lbmRlZCc6ICdSZWNvbW1lbmRlZCcsCiAgICAgICAgJ3doby5sZWdlbmRJbnRybyc6ICJVbmRlciBlYWNoIHNlcnZpY2UgeW91J2xsIGZpbmQgdGhlIFdlNCBkaXZpc2lvbnMgaW52b2x2ZWQ6IiwKICAgICAgICAnd2hvLmxlZ2VuZExlYWQnOiAibGVhZHMgdGhlIHNlcnZpY2UiLAogICAgICAgICd3aG8ubGVnZW5kU3VwcG9ydCc6ICJjb250cmlidXRlcyIsCiAgICAgICAgJ3doby5sZWFkJzogImxlYWRzIiwKICAgICAgICAnd2hvLmxlYWRIZWFkJzogIkxlYWRzIiwKICAgICAgICAnd2hvLnN1cHBvcnRIZWFkJzogIkNvbnRyaWJ1dGVzIHRvIiwKICAgICAgICAnd2hvLnN1cHBvcnQnOiAiY29udHJpYnV0ZXMiLAogICAgICAgICdzdGVwMi5ncm91cENvdW50JzogJ3tufSBzZWxlY3RlZCBvdXQgb2Yge3RvdGFsfScsCiAgICAgICAgJ3N0ZXAyLnJlc2V0RmlsdGVycyc6ICdDbGVhciBzZWFyY2gnLAogICAgICAgICdzdGVwMi5wcmV2JzogJ0NoYW5nZSBwcm9maWxlJywKICAgICAgICAnc3RlcDMucmVtb3ZlJzogJ1JlbW92ZScsCiAgICAgICAgJ3N0ZXAzLmZsb3dUbyc6ICd0bycsCiAgICAgICAgJ3N0ZXAzLmNvbXBsaWFuY2VUaXRsZSc6ICdSZWd1bGF0aW9ucyBjb3ZlcmVkJywKICAgICAgICAnc3RlcDMuY29tcGxpYW5jZUxlYWQnOiAnU3RhbmRhcmRzIHRoaXMgY29uZmlndXJhdGlvbiBoZWxwcyB5b3UgY29tcGx5IHdpdGguJywKICAgICAgICAnc3RlcDMubmV4dCc6ICdSZXF1ZXN0IGNvbmZpZ3VyYXRpb24nLAoKICAgICAgICAnc3RlcDQuZXllYnJvdyc6ICdTdGVwIDQgb2YgNCDCtyBTdW1tYXJ5JywKICAgICAgICAnc3RlcDQudGl0bGUnOiAnU3VtbWFyeSBhbmQgPHN0cm9uZz5yZXF1ZXN0PC9zdHJvbmc+JywKICAgICAgICAnc3RlcDQuc3VtbWFyeVRpdGxlJzogJ1lvdXIgY29uZmlndXJhdGlvbicsCiAgICAgICAgJ3N0ZXA0LmVkaXQnOiAnRWRpdCcsCiAgICAgICAgJ3N0ZXA0LnByb2ZpbGUnOiAnU2VsZWN0ZWQgcHJvZmlsZScsCiAgICAgICAgJ3N0ZXA0LmNvbXBsaWFuY2UnOiAnUmVndWxhdG9yeSBmcmFtZXdvcmsnLAogICAgICAgICdzdGVwNC5zaG93TW9yZSc6IHsgb25lOiAnK3tufSBtb3JlJywgbWFueTogJyt7bn0gbW9yZScgfSwKICAgICAgICAnc3RlcDQuc2hvd0xlc3MnOiAnU2hvdyBsZXNzJywKICAgICAgICAnc3RlcDQuY29weSc6ICdDb3B5IHRleHQnLAogICAgICAgICdzdGVwNC5wcmludCc6ICdQcmludCAvIFBERicsCiAgICAgICAgJ3N0ZXA0LmZvcm1UaXRsZSc6ICdSZXF1ZXN0IGEgcHJvcG9zYWwnLAogICAgICAgICdzdGVwNC5mcmVlQ29uZmlnJzogJ0ZyZWUgY29uZmlndXJhdGlvbicsCiAgICAgICAgJ3N0ZXA0LmZvcm1NaXNzaW5nJzogJ1RoZSBjb250YWN0IGZvcm0gaXMgbm90IGNvbmZpZ3VyZWQgeWV0LicsCgogICAgICAgICd0aWVyLmNvcmUubGFiZWwnOiAnQ29yZScsCiAgICAgICAgJ3RpZXIuY29tcGxlbWVudC5sYWJlbCc6ICJDb21wbGV0aW9uIiwKICAgICAgICAndGllci5jb21wbGVtZW50LnRpdGxlJzogIlRoZXkgbGVhZCBvdGhlciByZXF1aXJlbWVudHMiLAogICAgICAgICd0aWVyLmFkZGVkLmxhYmVsJzogJ0FkZGVkJywKICAgICAgICAndGllci5hZGRlZC50aXRsZSc6ICdBZGRlZCBieSB5b3UnLAoKICAgICAgICAndG9hc3QubmVlZFByb2ZpbGUnOiAnU2VsZWN0IGEgcHJvZmlsZSBmaXJzdC4nLAogICAgICAgICd0b2FzdC5jbGVhcmVkJzogJ1NlbGVjdGlvbiBjbGVhcmVkLicsCiAgICAgICAgJ3RvYXN0LnBsYXRmb3JtQWRkZWQnOiAne25hbWV9IGFkZGVkIHRvIHRoZSBjb25maWd1cmF0aW9uLicsCiAgICAgICAgJ3RvYXN0LmNvcGllZCc6ICdTdW1tYXJ5IGNvcGllZCB0byB0aGUgY2xpcGJvYXJkLicsCiAgICAgICAgJ3RvYXN0LmNvcHlGYWlsZWQnOiAnQ29weSBmYWlsZWQ6IHVzZSDigJxQcmludCAvIFBERuKAnS4nLAoKICAgICAgICAncHJpbnQucHJvZmlsZSc6ICdQcm9maWxlJywKICAgICAgICAncHJpbnQua3BpQ29tcGxpYW5jZSc6IHsgb25lOiAncmVndWxhdGlvbiBjb3ZlcmVkJywgbWFueTogJ3JlZ3VsYXRpb25zIGNvdmVyZWQnIH0sCiAgICAgICAgJ3ByaW50LmNvbXBsaWFuY2VMYWJlbCc6ICdSZWd1bGF0aW9ucyB0aGlzIGNvbmZpZ3VyYXRpb24gaGVscHMgeW91IGNvbXBseSB3aXRoJywKICAgICAgICAncHJpbnQuY29sQnJpZWYnOiAnSW4gc2hvcnQnLAogICAgICAgICdwcmludC5uZXh0VGl0bGUnOiAnTmV4dCBzdGVwOicsCiAgICAgICAgJ3ByaW50LmRpc2NsYWltZXInOiAnUHJlbGltaW5hcnksIG5vbi1iaW5kaW5nIGRvY3VtZW50LicsCiAgICAgICAgJ3ByaW50LnBhZ2UnOiAnUGFnZScsCiAgICAgICAgJ3ByaW50Lm9mJzogJ29mJywKICAgICAgICAncHJpbnQucmVvcGVuJzogJ1Jlb3BlbiB0aGlzIGNvbmZpZ3VyYXRpb246IHt1cmx9JywKCiAgICAgICAgJ3RleHQucHJvZmlsZSc6ICdQcm9maWxlJywKICAgICAgICAndGV4dC5kYXRlJzogJ0RhdGUnLAogICAgICAgICd0ZXh0LmNvbXBsaWFuY2UnOiAnUmVndWxhdGlvbnMgY292ZXJlZCcsCiAgICAgICAgJ3N0ZXAyLnRpdGxlJzogIldoaWNoIDxzdHJvbmc+cmVxdWlyZW1lbnRzPC9zdHJvbmc+IGRvIHlvdSBuZWVkPyIsCiAgICAgICAgJ3N0ZXAzLmZsb3dXaG9sZVN0YWNrJzogImFjcm9zcyB0aGUgd2hvbGUgcHJvamVjdCIsCiAgICAgICAgJ3N0ZXA0LmxlYWQnOiAiQ2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHNlbmQgaXQ6IGEgV2U0IHNwZWNpYWxpc3Qgd2lsbCBnZXQgYmFjayB0byB5b3Ugd2l0aGluIG9uZSBidXNpbmVzcyBkYXkuIEl0IGlzIG5laXRoZXIgYW4gb3JkZXIgbm9yIGEgY29tbWl0bWVudC4iLAogICAgICAgICdjYXQuc3R1ZHknOiAiQ2xpbmljYWwgc3R1ZHkiLAogICAgICAgICdjYXQubWFya2V0JzogIk1hcmtldCBhY2Nlc3MiLAogICAgICAgICdjYXQuZGlnaXRhbCc6ICJEaWdpdGFsIGhlYWx0aCIsCiAgICAgICAgJ2NhdC5xdWFsaXR5JzogIlF1YWxpdHkgJiBjb21wbGlhbmNlIiwKICAgICAgICAncHJpbnQudGl0bGUnOiAiV2U0IEhlYWx0aGNhcmUgc2VydmljZXMgcGxhbiIsCiAgICAgICAgJ3ByaW50LmtwaUZsb3dzJzogeyJvbmUiOiAiY29sbGFib3JhdGlvbiIsICJtYW55IjogImNvbGxhYm9yYXRpb25zIn0sCiAgICAgICAgJ3ByaW50LmZsb3dzVGl0bGUnOiAiSG93IHRoZXkgd29yayB0b2dldGhlciIsCiAgICAgICAgJ3ByaW50Lm5leHRUZXh0JzogIlNlbmQgdGhpcyBjb25maWd1cmF0aW9uIGZyb20gdGhlIE5hdmlnYXRvciBhdCB3ZTRoZWFsdGhjYXJlLmNvbS9uYXZpZ2F0b3Igb3Igd3JpdGUgdG8gaW5mb0B3ZTRoZWFsdGhjYXJlLmNvbTogYSBzcGVjaWFsaXN0IHdpbGwgZ2V0IGJhY2sgdG8geW91IHdpdGhpbiBvbmUgYnVzaW5lc3MgZGF5LiIsCiAgICAgICAgJ3RleHQudGl0bGUnOiAiV2U0IEhlYWx0aGNhcmUgU2VydmljZXMgTmF2aWdhdG9yIOKAlCBQcm9qZWN0IHBsYW4iLAogICAgICAgICd0ZXh0LmZvb3Rlcic6ICJHZW5lcmF0ZWQgd2l0aCBXZTQgU2VydmljZXMgTmF2aWdhdG9yIChodHRwczovL3dlNGhlYWx0aGNhcmUuY29tL25hdmlnYXRvci8pIiwKICAgICAgICAndW5pdC5yZXF1aXJlbWVudHMnOiB7Im9uZSI6ICJ7bn0gcmVxdWlyZW1lbnQiLCAibWFueSI6ICJ7bn0gcmVxdWlyZW1lbnRzIn0sCiAgICAgICAgJ3VuaXQubmVlZGVkUGxhdGZvcm1zJzogeyJvbmUiOiAie259IFdlNCBzZXJ2aWNlIiwgIm1hbnkiOiAie259IFdlNCBzZXJ2aWNlcyJ9LAogICAgICAgICduYXYuc3RlcDInOiAiUmVxdWlyZW1lbnRzIiwKICAgICAgICAnbmF2LnN0ZXAzJzogIldlNCBzZXJ2aWNlcyIsCiAgICAgICAgJ2ludHJvLmV5ZWJyb3cnOiAiU2VydmljZXMgTmF2aWdhdG9yIiwKICAgICAgICAnaW50cm8udGl0bGUnOiAiRnJvbSByZXNlYXJjaCB0byBtYXJrZXQsIDxzdHJvbmc+dGhlIHJpZ2h0IHBhdGggZm9yIHlvdXIgcHJvamVjdDwvc3Ryb25nPiIsCiAgICAgICAgJ2ludHJvLmxlYWQnOiAiQ2xpbmljYWwgcmVzZWFyY2gsIHJlZ3VsYXRvcnkgYWZmYWlycyBhbmQgZGlnaXRhbCBoZWFsdGggaW4gb25lIGVjb3N5c3RlbS4gQW5zd2VyIGEgZmV3IHF1ZXN0aW9uczogd2Ugc2hvdyB5b3Ugd2hpY2ggV2U0IHNlcnZpY2VzIHlvdSBuZWVkLCBob3cgdGhleSB3b3JrIHRvZ2V0aGVyIGFuZCB3aGljaCByZWd1bGF0aW9ucyB0aGV5IGNvdmVyLiIsCiAgICAgICAgJ3N0ZXAxLmxlYWQnOiAiUGljayB0aGUgcHJvZmlsZSBjbG9zZXN0IHRvIHlvdXJzOiB3ZSBwcmVwYXJlIGEgc3RhcnRpbmcgc2VsZWN0aW9uIG9mIHJlcXVpcmVtZW50cyB0aGF0IHlvdSBjYW4gY2hhbmdlIGluIHRoZSBuZXh0IHN0ZXAuIiwKICAgICAgICAnc3RlcDEubm9Qcm9maWxlRGVzYyc6ICJTdGFydCBmcm9tIHNjcmF0Y2ggYW5kIGNob29zZSB5b3VyIHJlcXVpcmVtZW50cyB5b3Vyc2VsZi4iLAogICAgICAgICdzdGVwMS5yZWFkeSc6IHsib25lIjogIntufSByZXF1aXJlbWVudCByZWFkeSIsICJtYW55IjogIntufSByZXF1aXJlbWVudHMgcmVhZHkifSwKICAgICAgICAnc3RlcDEuaW5mb0ZyZWUnOiAiPHN0cm9uZz5ObyBwcm9maWxlPC9zdHJvbmc+LCB5b3Ugd2lsbCBjaG9vc2UgeW91ciByZXF1aXJlbWVudHMiLAogICAgICAgICdzdGVwMS5pbmZvUHJvZmlsZSc6IHsib25lIjogIjxzdHJvbmc+e25hbWV9PC9zdHJvbmc+LCB7bn0gcmVxdWlyZW1lbnQgc2VsZWN0ZWQiLCAibWFueSI6ICI8c3Ryb25nPntuYW1lfTwvc3Ryb25nPiwge259IHJlcXVpcmVtZW50cyBzZWxlY3RlZCJ9LAogICAgICAgICdzdGVwMi5leWVicm93JzogIlN0ZXAgMiBvZiA0IMK3IFJlcXVpcmVtZW50cyIsCiAgICAgICAgJ3N0ZXAyLmxlYWRQcm9maWxlJzogeyJvbmUiOiAiRm9yIHRoZSA8c3Ryb25nPntuYW1lfTwvc3Ryb25nPiBwcm9maWxlIHdlIGhhdmUgYWxyZWFkeSBzZWxlY3RlZCB7bn0gcmVxdWlyZW1lbnQ6IGFkZCBvciByZW1vdmUgd2hhdCB5b3UgbmVlZC4iLCAibWFueSI6ICJGb3IgdGhlIDxzdHJvbmc+e25hbWV9PC9zdHJvbmc+IHByb2ZpbGUgd2UgaGF2ZSBhbHJlYWR5IHNlbGVjdGVkIHtufSByZXF1aXJlbWVudHM6IGFkZCBvciByZW1vdmUgd2hhdCB5b3UgbmVlZC4ifSwKICAgICAgICAnc3RlcDIubGVhZEZyZWUnOiAiU2VsZWN0IHdoYXQgeW91IG5lZWQ6IGNsaW5pY2FsIHN0dWR5LCBtYXJrZXQgYWNjZXNzLCBkaWdpdGFsIGhlYWx0aCwgcXVhbGl0eSBhbmQgY29tcGxpYW5jZS4iLAogICAgICAgICdzdGVwMi5zZWFyY2hMYWJlbCc6ICJTZWFyY2ggYSByZXF1aXJlbWVudCIsCiAgICAgICAgJ3N0ZXAyLnNlYXJjaFBsYWNlaG9sZGVyJzogIlNlYXJjaCBhY3Rpdml0eSwgcmVndWxhdGlvbiwga2V5d29yZOKApiIsCiAgICAgICAgJ3N0ZXAyLm5vUmVzdWx0cyc6ICJObyByZXF1aXJlbWVudCBtYXRjaGVzIOKAnHtxfeKAnS4iLAogICAgICAgICdzdGVwMi5wcmV2aWV3TGFiZWwnOiAiV2U0IHNlcnZpY2VzIHByZXZpZXciLAogICAgICAgICdzdGVwMi5wcmV2aWV3VGl0bGUnOiAiV2U0IHNlcnZpY2VzIGludm9sdmVkIiwKICAgICAgICAnc3RlcDIucHJldmlld0VtcHR5JzogIk5vIHJlcXVpcmVtZW50IHNlbGVjdGVkLiIsCiAgICAgICAgJ3N0ZXAyLmluZm9FbXB0eSc6ICJTZWxlY3QgYXQgbGVhc3Qgb25lIHJlcXVpcmVtZW50LiIsCiAgICAgICAgJ3N0ZXAyLm5leHQnOiAiU2VlIHRoZSBzZXJ2aWNlcyIsCiAgICAgICAgJ3N0ZXAzLmV5ZWJyb3cnOiAiU3RlcCAzIG9mIDQgwrcgV2U0IHNlcnZpY2VzIiwKICAgICAgICAnc3RlcDMudGl0bGUnOiAiVGhlIDxzdHJvbmc+V2U0IHNlcnZpY2VzPC9zdHJvbmc+IGZvciB5b3VyIHByb2plY3QiLAogICAgICAgICdzdGVwMy5sZWFkJzogeyJvbmUiOiAiSGVyZSBpcyB3aG8gbGVhZHMgeW91ciByZXF1aXJlbWVudCBhbmQgd2hvIGNvbnRyaWJ1dGVzIHRvIGl0OiBldmVyeSBXZTQgc2VydmljZSBpbnZvbHZlZCB3b3JrcyB3aXRoIHRoZSBvdGhlcnMgYXMgb25lIHRlYW0uIiwgIm1hbnkiOiAiSGVyZSBpcyB3aG8gbGVhZHMgeW91ciB7bn0gcmVxdWlyZW1lbnRzIGFuZCB3aG8gY29udHJpYnV0ZXMgdG8gdGhlbTogZXZlcnkgV2U0IHNlcnZpY2UgaW52b2x2ZWQgd29ya3Mgd2l0aCB0aGUgb3RoZXJzIGFzIG9uZSB0ZWFtLiJ9LAogICAgICAgICdzdGVwMy5lbXB0eSc6ICJObyBzZXJ2aWNlIGZvdW5kOiBzZWxlY3QgYXQgbGVhc3Qgb25lIHJlcXVpcmVtZW50IGluIHN0ZXAgMi4iLAogICAgICAgICdzdGVwMy5zZXJ2ZXNGb3InOiAiUmVxdWlyZW1lbnRzIGNvdmVyZWQiLAogICAgICAgICdzdGVwMy5zdHJlbmd0aGVucyc6ICJSZXF1aXJlbWVudHMgY292ZXJlZCIsCiAgICAgICAgJ3N0ZXAzLnNob3dPcHRpb25hbCc6IHsib25lIjogIlNob3cge259IG1vcmUgY29udHJpYnV0aW5nIHNlcnZpY2UiLCAibWFueSI6ICJTaG93IHtufSBtb3JlIGNvbnRyaWJ1dGluZyBzZXJ2aWNlcyJ9LAogICAgICAgICdzdGVwMy5oaWRlT3B0aW9uYWwnOiB7Im9uZSI6ICJIaWRlIHtufSBjb250cmlidXRpbmcgc2VydmljZSIsICJtYW55IjogIkhpZGUge259IGNvbnRyaWJ1dGluZyBzZXJ2aWNlcyJ9LAogICAgICAgICdzdGVwMy5vcHRpb25hbE5vdGUnOiAiVGhleSBhcmUgbm90IGVzc2VudGlhbCBmb3IgdGhlIGNob3NlbiByZXF1aXJlbWVudHMsIGJ1dCB0aGV5IHN0cmVuZ3RoZW4gdGhlbS4iLAogICAgICAgICdzdGVwMy5hZGRQbGF0Zm9ybU9ubHknOiAiQWRkIHRoZSBzZXJ2aWNlIG9ubHkiLAogICAgICAgICdzdGVwMy5mbG93c1RpdGxlJzogIkhvdyB0aGV5IHdvcmsgdG9nZXRoZXIiLAogICAgICAgICdzdGVwMy5mbG93c0xlYWQnOiAiVGhlIGRpdmlzaW9ucyBkb24ndCBoYW5kIGVhY2ggb3RoZXIgZG9jdW1lbnRzIOKAlCA8c3Ryb25nPnRoZXkgc2hhcmUgdGhlIHNhbWUgdmFsaWRhdGVkIGRhdGE8L3N0cm9uZz4uIiwKICAgICAgICAnc3RlcDMuZmxvd3NFbXB0eSc6ICJZb3VyIHNlbGVjdGlvbiBpcyBkZWxpdmVyZWQgbGFyZ2VseSBieSA8c3Ryb25nPntuYW1lfTwvc3Ryb25nPi4gRXZlbiBoZXJlIHRoZSBXZTQgYWR2YW50YWdlIGhvbGRzOiA8c3Ryb25nPmEgc2luZ2xlIHF1YWxpdHkgc3lzdGVtIGFuZCBvbmUgZGF0YSBnb3Zlcm5hbmNlPC9zdHJvbmc+IGJlaGluZCBldmVyeSBhY3Rpdml0eS4iLAogICAgICAgICdzdGVwMy5mbG93c0VuZCc6ICJUaGUgcmVzdWx0OiBvbmUgY29udGludW91cyBmbG93IDxzdHJvbmc+ZnJvbSBpZGVhIHRvIG1hcmtldDwvc3Ryb25nPiwgd2l0aCBubyBpbnRlZ3JhdGlvbiBjb3N0IGJldHdlZW4gdmVuZG9ycy4iLAogICAgICAgICdzdGVwMy5pbmZvJzogeyJvbmUiOiAiPHN0cm9uZz57bn0gV2U0IHNlcnZpY2UgaW4gdGhlIGNvbmZpZ3VyYXRpb248L3N0cm9uZz4gwrcge2N9IHJlZ3VsYXRpb25zIiwgIm1hbnkiOiAiPHN0cm9uZz57bn0gV2U0IHNlcnZpY2VzIGluIHRoZSBjb25maWd1cmF0aW9uPC9zdHJvbmc+IMK3IHtjfSByZWd1bGF0aW9ucyJ9LAogICAgICAgICdzdGVwMy5wcmV2JzogIkVkaXQgcmVxdWlyZW1lbnRzIiwKICAgICAgICAnc3RlcDQuYmFjayc6ICJCYWNrIHRvIHNlcnZpY2VzIiwKICAgICAgICAnc3RlcDQucGxhdGZvcm1zJzogIlJlY29tbWVuZGVkIFdlNCBzZXJ2aWNlcyIsCiAgICAgICAgJ3N0ZXA0LnJlcXVpcmVtZW50cyc6ICJTZWxlY3RlZCByZXF1aXJlbWVudHMiLAogICAgICAgICd0aWVyLmNvcmUudGl0bGUnOiAiV2hvIGxlYWRzIHlvdXIgcHJvamVjdCIsCiAgICAgICAgJ3RpZXIuY29yZS5ub3RlJzogInRoZXkgbGVhZCBtb3N0IG9mIHRoZSBjaG9zZW4gcmVxdWlyZW1lbnRzIiwKICAgICAgICAndGllci5jb21wbGVtZW50Lm5vdGUnOiAicmVzcG9uc2libGUgZm9yIHBhcnQgb2YgdGhlIGNob3NlbiByZXF1aXJlbWVudHMiLAogICAgICAgICd0aWVyLmFkZGVkLm5vdGUnOiAic2VydmljZXMgeW91IGFkZGVkIHlvdXJzZWxmIHRvIHRoZSBjb25maWd1cmF0aW9uIiwKICAgICAgICAndGllci5vcHRpb25hbC5sYWJlbCc6ICJDb250cmlidXRlcyIsCiAgICAgICAgJ3RpZXIub3B0aW9uYWwudGl0bGUnOiAiQWxzbyBjb250cmlidXRpbmciLAogICAgICAgICd0aWVyLm9wdGlvbmFsLm5vdGUnOiAidGhleSBkb24ndCBsZWFkIGFueSBjaG9zZW4gcmVxdWlyZW1lbnQsIGJ1dCBjb250cmlidXRlIHRvIHNvbWUiLAogICAgICAgICd0b2FzdC5uZWVkUmVxdWlyZW1lbnQnOiAiU2VsZWN0IGF0IGxlYXN0IG9uZSByZXF1aXJlbWVudCB0byBjb250aW51ZS4iLAogICAgICAgICd0b2FzdC5wcm9maWxlQ2hhbmdlZCc6ICJQcm9maWxlIGNoYW5nZWQ6IHJlcXVpcmVtZW50cyB1cGRhdGVkIGZvciB7bmFtZX0uIiwKICAgICAgICAndG9hc3QucHJvZmlsZVJlbW92ZWQnOiAiUHJvZmlsZSByZW1vdmVkOiB5b3Ugd2lsbCBjaG9vc2UgeW91ciByZXF1aXJlbWVudHMuIiwKICAgICAgICAndG9hc3QucmVjb21tZW5kZWRBZGRlZCc6IHsib25lIjogIntufSByZWNvbW1lbmRlZCByZXF1aXJlbWVudCBhZGRlZC4iLCAibWFueSI6ICJ7bn0gcmVjb21tZW5kZWQgcmVxdWlyZW1lbnRzIGFkZGVkLiJ9LAogICAgICAgICdwcmludC5pbnRybyc6ICJUaGlzIHNoZWV0IHN1bW1hcmlzZXMgdGhlIHJlcXVpcmVtZW50cyB5b3UgY2hvc2UgaW4gdGhlIE5hdmlnYXRvciwgdGhlIFdlNCBIZWFsdGhjYXJlIHNlcnZpY2VzIGNvdmVyaW5nIHRoZW0sIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIgYW5kIHRoZSByZWd1bGF0aW9ucyBjb3ZlcmVkLiIsCiAgICAgICAgJ3ByaW50LmtwaVJlcXVpcmVtZW50cyc6IHsib25lIjogInJlcXVpcmVtZW50IGNob3NlbiIsICJtYW55IjogInJlcXVpcmVtZW50cyBjaG9zZW4ifSwKICAgICAgICAncHJpbnQua3BpUGxhdGZvcm1zJzogeyJvbmUiOiAiV2U0IHNlcnZpY2UiLCAibWFueSI6ICJXZTQgc2VydmljZXMifSwKICAgICAgICAncHJpbnQucmVxVGl0bGUnOiAiVGhlIHJlcXVpcmVtZW50cyB5b3UgY2hvc2UiLAogICAgICAgICdwcmludC5yZXFMZWFkJzogIlRoZSBwcm9qZWN0IHJlcXVpcmVtZW50cywgZ3JvdXBlZCBieSBhcmVhLCB3aXRoIHRoZSBXZTQgZGl2aXNpb25zIGludm9sdmVkLiIsCiAgICAgICAgJ3ByaW50LmNvbFJlcXVpcmVtZW50JzogIlJlcXVpcmVtZW50IiwKICAgICAgICAncHJpbnQuY29sTWFuYWdlZEJ5JzogIldlNCBzZXJ2aWNlIiwKICAgICAgICAncHJpbnQucGZtVGl0bGUnOiAiVGhlIFdlNCBzZXJ2aWNlcyBpbiB0aGUgY29uZmlndXJhdGlvbiIsCiAgICAgICAgJ3ByaW50LnBmbUxlYWRDb3JlJzogIldlIHN0YXJ0IGZyb20gdGhlIDxzdHJvbmc+Y29yZTwvc3Ryb25nPiBzZXJ2aWNlcyIsCiAgICAgICAgJ3ByaW50LnBmbUxlYWRDb21wbGVtZW50JzogIjsgdGhlIDxzdHJvbmc+Y29tcGxldGlvbjwvc3Ryb25nPiBzZXJ2aWNlcyBjb3ZlciB3aGF0IHRoZSBjb3JlIG9uZXMgZG8gbm90IiwKICAgICAgICAncHJpbnQucGZtTGVhZEFkZGVkJzogIjsgdGhvc2UgPHN0cm9uZz5hZGRlZCBieSB5b3U8L3N0cm9uZz4gc3RyZW5ndGhlbiByZXF1aXJlbWVudHMgYWxyZWFkeSBjb3ZlcmVkIiwKICAgICAgICAncHJpbnQucGZtTGVhZEVuZCc6ICIuIFVuZGVyIGVhY2ggb25lLCB0aGUgbGlua2VkIHJlcXVpcmVtZW50czogaW4gYm9sZCB0aG9zZSBpdCBsZWFkcyBkaXJlY3RseS4iLAogICAgICAgICdwcmludC5saW5rZWQnOiAiTGlua2VkIHJlcXVpcmVtZW50czoiLAogICAgICAgICd0ZXh0LnJlcXVpcmVtZW50cyc6ICJTZWxlY3RlZCByZXF1aXJlbWVudHMiLAogICAgICAgICd0ZXh0LnBsYXRmb3Jtcyc6ICJXZTQgc2VydmljZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24iLAogICAgICAgICd0ZXh0LmxpbmtlZCc6ICJMaW5rZWQgcmVxdWlyZW1lbnRzIgogICAgfQp9OwoKLyogVGVzdG8gdHJhZG90dG87IHtub21lfSB2aWVuZSBzb3N0aXR1aXRvIGRhaSB2YWxvcmkgaW4gdmFycyAqLwoKLyogVVRNIGRpIGF0dGVycmFnZ2lvIChwcmltYSB2aXNpdGEgZGVsbGEgc2Vzc2lvbmUpOiB1dG1fc291cmNlIHJlc3RhIGEgQ29iYWx0IHBlciBpbCBjYW5hbGUsCiAgIGdsaSBhbHRyaSBwYXJhbWV0cmkgVVRNIGRpIENvYmFsdCBwb3J0YW5vIGxhIGNvbmZpZ3VyYXppb25lIGNvbWUgaW4gYUNoaXJhbCAqLwpjb25zdCBMQU5ESU5HX1VUTSA9ICgoKSA9PiB7CiAgICBjb25zdCBLRVkgPSAnd2U0bmF2X3V0bSc7CiAgICBjb25zdCBxID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKICAgIGNvbnN0IGtleXMgPSBbJ3V0bV9zb3VyY2UnLCAndXRtX21lZGl1bScsICd1dG1fY2FtcGFpZ24nLCAndXRtX3Rlcm0nLCAndXRtX2NvbnRlbnQnLCAnZ2NsaWQnLCAnZmJjbGlkJywgJ2xpX2ZhdF9pZCddOwogICAgY29uc3QgZnJvbVVybCA9IHt9OwogICAga2V5cy5mb3JFYWNoKGsgPT4geyBpZiAocS5nZXQoaykpIGZyb21Vcmxba10gPSBxLmdldChrKS5zbGljZSgwLCAxNTApOyB9KTsKICAgIGxldCBzYXZlZCA9IHt9OwogICAgdHJ5IHsgc2F2ZWQgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oS0VZKSB8fCAne30nKTsgfSBjYXRjaCAoZSkgeyAvKiBzdG9yYWdlIGJsb2NjYXRvICovIH0KICAgIGlmIChPYmplY3Qua2V5cyhmcm9tVXJsKS5sZW5ndGgpIHsKICAgICAgICBzYXZlZCA9IGZyb21Vcmw7CiAgICAgICAgdHJ5IHsgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShLRVksIEpTT04uc3RyaW5naWZ5KHNhdmVkKSk7IH0gY2F0Y2ggKGUpIHsgLyogaWdub3JlICovIH0KICAgIH0KICAgIHJldHVybiBzYXZlZDsKfSkoKTsKCmZ1bmN0aW9uIHQoa2V5LCB2YXJzID0ge30pIHsKICAgIGxldCB2YWx1ZSA9IFNUUklOR1NbTEFOR11ba2V5XSA\/PyBTVFJJTkdTLml0W2tleV0gPz8ga2V5OwogICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHZhbHVlID0gdmFycy5uID09PSAxID8gdmFsdWUub25lIDogdmFsdWUubWFueTsKICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9ceyhcdyspXH0vZywgKG1hdGNoLCBuYW1lKSA9PiAobmFtZSBpbiB2YXJzID8gdmFyc1tuYW1lXSA6IG1hdGNoKSk7Cn0KCi8qIFZhbG9yZSBuZWxsYSBsaW5ndWEgYXR0aXZhIGRpIHVuIGNhbXBvIGRhdGkgeyBpdCwgZW4gfSAobGUgc3RyaW5naGUgc2VtcGxpY2kgcGFzc2FubyBpbnZhcmlhdGUpICovCmZ1bmN0aW9uIEwodmFsdWUpIHsKICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKHZhbHVlW0xBTkddIHx8IHZhbHVlLml0KSA6IHZhbHVlOwp9CgovKiBUcmFkdWNlIGlsIG1hcmt1cCBzdGF0aWNvOiBkYXRhLWkxOG4gKGNvbnRlbnV0bykgZSBkYXRhLWkxOG4tPGF0dHJpYnV0bz4gKi8KZnVuY3Rpb24gdHJhbnNsYXRlU3RhdGljVGV4dChyb290KSB7CiAgICAvKiBUZXN0aSBnacOgIHNjcml0dGkgZGFsIGJ1aWxkIChwcmVmaWxsU3RhdGljVGV4dCk6IHNlIGlsIENTUyBtb3N0cmEgZ2nDoCBsYSBsaW5ndWEgZ2l1c3RhIHNpIHRvZ2xpZQogICAgICAgc29sbyBsJ2FsdHJhLCBzZW56YSByaWRpc2VnbmFyZSBpbCB0ZXN0byB2aXNpYmlsZSAoYWx0cmltZW50aSBjb250ZXJlYmJlIGNvbWUgdW4gbnVvdm8gTENQKSAqLwogICAgY29uc3Qgc2hvd25MYW5nID0gL15lbi9pLnRlc3QoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcpID8gJ2VuJyA6ICdpdCc7CiAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWkxOG5dJykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgaWYgKExBTkcgPT09IHNob3duTGFuZyAmJiBlbC5xdWVyeVNlbGVjdG9yKGA6c2NvcGUgPiAuYWNoLXByZS0tJHtMQU5HfWApKSB7CiAgICAgICAgICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoYDpzY29wZSA+IC5hY2gtcHJlOm5vdCguYWNoLXByZS0tJHtMQU5HfSlgKS5mb3JFYWNoKHNwYW4gPT4gc3Bhbi5yZW1vdmUoKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWwuaW5uZXJIVE1MID0gdChlbC5kYXRhc2V0LmkxOG4pOwogICAgfSk7CiAgICBbJ3BsYWNlaG9sZGVyJywgJ2FyaWEtbGFiZWwnLCAndGl0bGUnXS5mb3JFYWNoKGF0dHIgPT4gewogICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtaTE4bi0ke2F0dHJ9XWApLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0ciwgdChlbC5nZXRBdHRyaWJ1dGUoYGRhdGEtaTE4bi0ke2F0dHJ9YCkpKTsKICAgICAgICB9KTsKICAgIH0pOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBhQ2hpcmFsIE5hdmlnYXRvciDigJQgTG9naWNhIGRlbCB3aXphcmQgKHJpY2hpZWRlIGpzL2RhdGEuanMgZSBqcy9pMThuLmpzKQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKLyogPT09PT09PT09PT09IE1FVEFEQVRJIFVJID09PT09PT09PT09PSAqLwpjb25zdCBDQVRfT1JERVIgPSBbJ3N0dWR5JywgJ21hcmtldCcsICdkaWdpdGFsJywgJ3F1YWxpdHknXTsKLyogTGl2ZWxsaSBkZWxsZSBwaWF0dGFmb3JtZTogdGVzdGkgaW4gaTE4bi5qcyAodGllci48bm9tZT4ubGFiZWwvdGl0bGUvbm90ZSkgKi8KY29uc3QgVElFUl9DU1MgPSB7IGNvcmU6ICdjb3JlJywgY29tcGxlbWVudDogJ3N1cHAnLCBhZGRlZDogJ3N1cHAnLCBvcHRpb25hbDogJ29wdCcgfTsKY29uc3QgdGllclRleHQgPSAodGllciwgcGFydCkgPT4gdChgdGllci4ke3RpZXJ9LiR7cGFydH1gKTsKY29uc3QgVElFUl9PUkRFUiA9IFsnY29yZScsICdjb21wbGVtZW50JywgJ2FkZGVkJywgJ29wdGlvbmFsJ107CgovKiBMb2dvIGRlbGxhIHNjaGVkYSBQREY6IGZpbGUgZ2nDoCBwdWJibGljYXRvIHN1IGFjaGlyYWwuaXQsIGZ1bnppb25hIHNpYSBpbiBsb2NhbGUgc2lhIHN1IFdvcmRQcmVzcyAqLwpjb25zdCBMT0dPX1VSTCA9ICdodHRwczovL3dlNGhlYWx0aGNhcmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEyL2xvZ293ZTRIZWFsdGhjYXJlQDN4LTc2OHgxODMucG5nJzsKY29uc3QgUFJFRkVSU19SRURVQ0VEX01PVElPTiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CgovKiBXaXphcmQgU3RhdGUgKi8KY29uc3Qgd2l6YXJkID0gewogICAgY3VycmVudFN0ZXA6IDEsCiAgICBzZWxlY3RlZE1hY3JvSWQ6IG51bGwsICAgICAgLyogTmVzc3VuIHByb2ZpbG8gcHJlLXNlbGV6aW9uYXRvOiBsYSBzY2VsdGEgw6ggZXNwbGljaXRhICovCiAgICBpc0V4cGxvcmF0aW9uTW9kZTogZmFsc2UsCiAgICBzZWxlY3RlZFNlcnZpY2VzOiBbXSwKICAgIGFkZGVkUGxhdGZvcm1zOiBbXSwgICAgICAgICAvKiBQaWF0dGFmb3JtZSBmYWNvbHRhdGl2ZSBpbmNsdXNlIGEgbWFubyBhbCBwYXNzbyAzICovCiAgICBzaG93T3B0aW9uYWw6IGZhbHNlLAogICAgY29sbGFwc2VkQ2F0czogW10sICAgICAgICAgIC8qIENhdGVnb3JpZSBjaGl1c2UgYWwgcGFzc28gMiAqLwogICAgZmlsdGVyQ2F0OiAnYWxsJywKICAgIHNlYXJjaFF1ZXJ5OiAnJywKICAgIGV4cGFuZGVkQ2hpcHM6IFtdICAgICAgICAgICAvKiBFbGVuY2hpIGRlbCByaWVwaWxvZ28gKHBhc3NvIDQpIGFwZXJ0aSBwZXIgaW50ZXJvICovCn07CgovKiA9PT09PT09PT09PT0gSEVMUEVSUyA9PT09PT09PT09PT0gKi8KZnVuY3Rpb24gZ2V0UHJvZmlsZSgpIHsKICAgIGlmICh3aXphcmQuaXNFeHBsb3JhdGlvbk1vZGUpIHJldHVybiBudWxsOwogICAgcmV0dXJuIE1BQ1JPX0VOVElUSUVTLmZpbmQobSA9PiBtLmlkID09PSB3aXphcmQuc2VsZWN0ZWRNYWNyb0lkKSB8fCBudWxsOwp9CgpmdW5jdGlvbiBnZXRQcm9maWxlRGVmYXVsdHMobSkgewogICAgcmV0dXJuIG0gPyBbLi4uKG0uY29yZUl0ZW1zIHx8IG0uaXRlbXMpXSA6IFtdOwp9CgpmdW5jdGlvbiBoYXNQcm9maWxlKCkgewogICAgcmV0dXJuIHdpemFyZC5pc0V4cGxvcmF0aW9uTW9kZSB8fCAhIWdldFByb2ZpbGUoKTsKfQoKZnVuY3Rpb24gaXNTZWxlY3RlZChpZCkgewogICAgcmV0dXJuIHdpemFyZC5zZWxlY3RlZFNlcnZpY2VzLmluY2x1ZGVzKGlkKTsKfQoKCmZ1bmN0aW9uIHNob3J0TmFtZShwaWQpIHsKICAgIHJldHVybiBQTEFURk9STVNfREFUQVtwaWRdLm5hbWUucmVwbGFjZSgvXldlNFxzKy8sICcnKTsKfQoKCi8qIFBhc3NvIG1hc3NpbW8gcmFnZ2l1bmdpYmlsZSBjb24gbG8gc3RhdG8gYXR0dWFsZSAqLwpmdW5jdGlvbiBtYXhSZWFjaGFibGVTdGVwKCkgewogICAgaWYgKCFoYXNQcm9maWxlKCkpIHJldHVybiAxOwogICAgaWYgKHdpemFyZC5zZWxlY3RlZFNlcnZpY2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDI7CiAgICByZXR1cm4gNDsKfQoKLyogTmllbnRlIGBzYCBlIGBwYDogaW4gV29yZFByZXNzIHNvbm8gbGEgcmljZXJjYSBlIGwnaWQgYXJ0aWNvbG8sIGUgbGEgcGFnaW5hIGRpdmVudGVyZWJiZQogICAicmlzdWx0YXRpIGRpIHJpY2VyY2EiIG8gNDA0IGludmVjZSBkZWwgY29uZmlndXJhdG9yZSAqLwpjb25zdCBTVEFURV9QQVJBTVMgPSBbJ3N0ZXAnLCAnbWFjcm8nLCAnbW9kZScsICdyZXEnLCAncGZtJ107CgovKiBBZ2dpdW5nZSBhIGBwYXJhbXNgIGxvIHN0YXRvIGRlbCB3aXphcmQgKi8KZnVuY3Rpb24gd3JpdGVTdGF0ZVBhcmFtcyhwYXJhbXMpIHsKICAgIFNUQVRFX1BBUkFNUy5mb3JFYWNoKGsgPT4gcGFyYW1zLmRlbGV0ZShrKSk7CiAgICBpZiAod2l6YXJkLmN1cnJlbnRTdGVwID4gMSkgcGFyYW1zLnNldCgnc3RlcCcsIHdpemFyZC5jdXJyZW50U3RlcCk7CiAgICBpZiAod2l6YXJkLmlzRXhwbG9yYXRpb25Nb2RlKSBwYXJhbXMuc2V0KCdtb2RlJywgJ2FsbCcpOwogICAgZWxzZSBpZiAod2l6YXJkLnNlbGVjdGVkTWFjcm9JZCkgcGFyYW1zLnNldCgnbWFjcm8nLCB3aXphcmQuc2VsZWN0ZWRNYWNyb0lkKTsKICAgIGlmICh3aXphcmQuc2VsZWN0ZWRTZXJ2aWNlcy5sZW5ndGgpIHBhcmFtcy5zZXQoJ3JlcScsIHdpemFyZC5zZWxlY3RlZFNlcnZpY2VzLmpvaW4oJywnKSk7CiAgICBpZiAod2l6YXJkLmFkZGVkUGxhdGZvcm1zLmxlbmd0aCkgcGFyYW1zLnNldCgncGZtJywgd2l6YXJkLmFkZGVkUGxhdGZvcm1zLmpvaW4oJywnKSk7CiAgICByZXR1cm4gcGFyYW1zOwp9CgovKiBMaW5rIGNoZSByaWFwcmUgbGEgY29uZmlndXJhemlvbmU6IHNvbG8gcGFnaW5hIGUgc3RhdG8sIHNlbnphIHBhcmFtZXRyaSBlc3RyYW5laQogICAoYW50ZXByaW1hIFdvcmRQcmVzcywgVVRN4oCmKTsgcGFnZV9pZCByZXN0YSBwZXIgaSBwZXJtYWxpbmsgbm9uICJiZWxsaSIgKi8KZnVuY3Rpb24gY29uZmlndXJhdGlvbkxpbmsoKSB7CiAgICBpZiAoIS9eaHR0cHM\/Oi8udGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpKSByZXR1cm4gJyc7CiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7CiAgICBjb25zdCBwYWdlSWQgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldCgncGFnZV9pZCcpOwogICAgaWYgKHBhZ2VJZCkgcGFyYW1zLnNldCgncGFnZV9pZCcsIHBhZ2VJZCk7CiAgICB3cml0ZVN0YXRlUGFyYW1zKHBhcmFtcyk7CiAgICBpZiAod2l6YXJkLmN1cnJlbnRTdGVwID09PSA0KSBwYXJhbXMuc2V0KCdwcmludCcsICcxJyk7CiAgICAvKiBWaXJnb2xlIGluIGNoaWFybzogaWwgbGluayByZXN0YSBsZWdnaWJpbGUgbmVsIENSTSAoc29ubyB2YWxpZGUgaW4gdW5hIHF1ZXJ5KSAqLwogICAgY29uc3QgcXMgPSBwYXJhbXMudG9TdHJpbmcoKS5yZXBsYWNlKC8lMkMvZ2ksICcsJyk7CiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIChxcyA\/ICc\/JyArIHFzIDogJycpOwp9CgpmdW5jdGlvbiBzeW5jVXJsKCkgewogICAgdHJ5IHsKICAgICAgICBjb25zdCBxcyA9IHdyaXRlU3RhdGVQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSkudG9TdHJpbmcoKTsKICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgKHFzID8gJz8nICsgcXMgOiAnJykgKyB3aW5kb3cubG9jYXRpb24uaGFzaCk7CiAgICB9IGNhdGNoIChlKSB7IC8qIGFtYmllbnRpIHNhbmRib3ggc2VuemEgaGlzdG9yeSAqLyB9Cn0KCmZ1bmN0aW9uIG9uU2VsZWN0aW9uQ2hhbmdlZCgpIHsKICAgIHJlZnJlc2hTdGVwcGVyKCk7CiAgICBzeW5jVXJsKCk7Cn0KCi8qID09PT09PT09PT09PSBTVEVQIE5BVklHQVRJT04gPT09PT09PT09PT09ICovCmZ1bmN0aW9uIHJlZnJlc2hTdGVwcGVyKCkgewogICAgY29uc3QgbWF4U3RlcCA9IG1heFJlYWNoYWJsZVN0ZXAoKTsKICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7IGkrKykgewogICAgICAgIGNvbnN0IGluZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwSW5kaWNhdG9yJyArIGkpOwogICAgICAgIGNvbnN0IGlzQWN0aXZlID0gaSA9PT0gd2l6YXJkLmN1cnJlbnRTdGVwOwogICAgICAgIGNvbnN0IGlzRG9uZSA9IGkgPCB3aXphcmQuY3VycmVudFN0ZXA7CiAgICAgICAgaW5kLmNsYXNzTGlzdC50b2dnbGUoJ2lzLWFjdGl2ZScsIGlzQWN0aXZlKTsKICAgICAgICBpbmQuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtZG9uZScsIGlzRG9uZSk7CiAgICAgICAgaW5kLmRpc2FibGVkID0gaSA+IG1heFN0ZXA7CiAgICAgICAgaWYgKGlzQWN0aXZlKSBpbmQuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCAnc3RlcCcpOwogICAgICAgIGVsc2UgaW5kLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50Jyk7CiAgICAgICAgaW5kLnF1ZXJ5U2VsZWN0b3IoJy5hY2gtc3RlcC1udW0nKS5pbm5lckhUTUwgPSBpc0RvbmUgPyAnPGkgY2xhc3M9ImFjaC1pY28gYWNoLWljby0tY2hlY2siIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+JyA6ICcwJyArIGk7CiAgICB9CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcHBlclByb2dyZXNzJykuc3R5bGUud2lkdGggPSAoKHdpemFyZC5jdXJyZW50U3RlcCAtIDEpIC8gMyAqIDEwMCkgKyAnJSc7Cn0KCi8qIEFsdGV6emEgZGkgY2nDsiBjaGUgcmVzdGEgZmlzc28gaW4gYWx0byBzdWxsYSBwYWdpbmEgV29yZFByZXNzOiBoZWFkZXIgc3RpY2t5IGRpIEVsZW1lbnRvcgogICBlIGJhcnJhIGFkbWluIChzb2xvIHBlciBjaGkgw6ggbG9nZ2F0bykuIEluIHN2aWx1cHBvIG5vbiBjJ8OoIG5lc3N1bm8gZGVpIGR1ZTogMCAqLwpmdW5jdGlvbiBzdGlja3lIZWFkZXJIZWlnaHQoKSB7CiAgICBjb25zdCBoZWFkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkZXIud3AtYmxvY2stdGVtcGxhdGUtcGFydCwgLndwLXNpdGUtYmxvY2tzID4gaGVhZGVyJyk7CiAgICBjb25zdCBzdGlja3kgPSBoZWFkZXIgJiYgL3N0aWNreXxmaXhlZC8udGVzdChnZXRDb21wdXRlZFN0eWxlKGhlYWRlcikucG9zaXRpb24pID8gaGVhZGVyLm9mZnNldEhlaWdodCA6IDA7CiAgICBjb25zdCBhZG1pbkJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cGFkbWluYmFyJyk7CiAgICByZXR1cm4gc3RpY2t5ICsgKGFkbWluQmFyID8gYWRtaW5CYXIub2Zmc2V0SGVpZ2h0IDogMCk7Cn0KCmZ1bmN0aW9uIGdvVG9TdGVwKHN0ZXAsIG9wdHMgPSB7fSkgewogICAgaWYgKHN0ZXAgPCAxIHx8IHN0ZXAgPiA0KSByZXR1cm47CiAgICBjb25zdCBtYXhTdGVwID0gbWF4UmVhY2hhYmxlU3RlcCgpOwogICAgaWYgKHN0ZXAgPiBtYXhTdGVwKSB7CiAgICAgICAgc2hvd1RvYXN0KHQobWF4U3RlcCA9PT0gMSA\/ICd0b2FzdC5uZWVkUHJvZmlsZScgOiAndG9hc3QubmVlZFJlcXVpcmVtZW50JyksICd3YXJuJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgd2l6YXJkLmN1cnJlbnRTdGVwID0gc3RlcDsKCiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyBpKyspIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcFZpZXcnICsgaSkuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtdmlzaWJsZScsIGkgPT09IHN0ZXApOwogICAgfQogICAgcmVmcmVzaFN0ZXBwZXIoKTsKCiAgICBpZiAoc3RlcCA9PT0gMSkgcmVuZGVyTWFjcm9HcmlkKCk7CiAgICBlbHNlIGlmIChzdGVwID09PSAyKSByZW5kZXJTdGVwMigpOwogICAgZWxzZSBpZiAoc3RlcCA9PT0gMykgcmVuZGVyU3RlcDNSZXN1bHRzKCk7CiAgICBlbHNlIGlmIChzdGVwID09PSA0KSByZW5kZXJTdGVwNFN1bW1hcnkoKTsKCiAgICBzeW5jVXJsKCk7CiAgICBpZiAoc3RlcCA9PT0gNCkgcmVuZGVyQ29iYWx0Rm9ybSgpOwoKICAgIGlmICghb3B0cy5pbml0aWFsKSB7CiAgICAgICAgLyogTGEgcGFnaW5hIHJpcGFydGUgZGFsbG8gc3RlcHBlciwgc290dG8gbCdoZWFkZXIgc3RpY2t5IGRlbCBzaXRvOiBsJ2ludHJvZHV6aW9uZSByZXN0YSBzb3ByYSAqLwogICAgICAgIGNvbnN0IHN0ZXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2U0LW5hdmlnYXRvciAuYWNoLXN0ZXBwZXItd3JhcCcpOwogICAgICAgIGNvbnN0IHRvcCA9IHN0ZXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFkgLSBzdGlja3lIZWFkZXJIZWlnaHQoKTsKICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IE1hdGgubWF4KDAsIHRvcCksIGJlaGF2aW9yOiBQUkVGRVJTX1JFRFVDRURfTU9USU9OID8gJ2F1dG8nIDogJ3Ntb290aCcgfSk7CiAgICAgICAgY29uc3QgaGVhZGluZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzdGVwVmlldycgKyBzdGVwICsgJyAuYWNoLWgxLCAjc3RlcFZpZXcnICsgc3RlcCArICcgLmFjaC1oMicpOwogICAgICAgIGlmIChoZWFkaW5nKSBoZWFkaW5nLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsKICAgIH0KfQoKLyogQ29tcHV0ZSBQbGF0Zm9ybSBTdGFjayBBbGdvcml0aG0gKi8KZnVuY3Rpb24gY29tcHV0ZVN0YWNrKCkgewogICAgY29uc3Qgc2VsZWN0ZWQgPSB3aXphcmQuc2VsZWN0ZWRTZXJ2aWNlcy5tYXAoaWQgPT4gSVRFTVNfREFUQS5maW5kKHMgPT4gcy5pZCA9PT0gaWQpKS5maWx0ZXIoQm9vbGVhbik7CiAgICBjb25zdCByYW5rZWQgPSByYW5rUGxhdGZvcm1zKHNlbGVjdGVkKTsKCiAgICAvKiBDb3JlID0gYWwgbWFzc2ltbyAyIHBpYXR0YWZvcm1lIChkb2NzL2Fkci8wMDAxLWNvcmUtYWwtbWFzc2ltby1kdWUubWQpLCBmaXNzYXRlCiAgICAgICBzdWxsYSBzZWxlemlvbmUgaW5pemlhbGUgZGVsIHByb2ZpbG8gKGRvY3MvYWRyLzAwMDItY29yZS1zdGFiaWxpLm1kKS4gKi8KICAgIGNvbnN0IGNvcmVJZHMgPSBuZXcgU2V0KHJlc29sdmVDb3JlUGxhdGZvcm1zKHNlbGVjdGVkKSk7CiAgICBjb25zdCBmaWxscyA9IHBpY2tDb21wbGVtZW50UGxhdGZvcm1zKHNlbGVjdGVkLCByYW5rZWQsIGNvcmVJZHMpOwogICAgcmFua2VkLmZvckVhY2gocCA9PiB7CiAgICAgICAgLyogQ29tZSBuZWwgTmF2aWdhdG9yIG9yaWdpbmFsZSBvZ25pIHNlcnZpemlvIFdlNCBjb2ludm9sdG8gZmEgcGFydGUgZGVsIHBpYW5vOgogICAgICAgICAgIGNvcmUgPSBjaGkgZ3VpZGEgbGEgbWFnZ2lvciBwYXJ0ZSwgY29tcGxlbWVudCA9IGd1aWRhIGFsdHJpIHJlcXVpc2l0aSwgb3B0aW9uYWwgPSBzb2xvIHN1cHBvcnRvICovCiAgICAgICAgcC50aWVyID0gY29yZUlkcy5oYXMocC5pZCkgPyAnY29yZScgOiBwLnByaW1hcnlfaGl0cyA+IDAgPyAnY29tcGxlbWVudCcgOiAnb3B0aW9uYWwnOwogICAgICAgIHAuZmlsbHMgPSBmaWxscy5nZXQocC5pZCkgfHwgW107CiAgICB9KTsKICAgIHJhbmtlZC5zb3J0KChhLCBiKSA9PiBUSUVSX09SREVSLmluZGV4T2YoYS50aWVyKSAtIFRJRVJfT1JERVIuaW5kZXhPZihiLnRpZXIpKTsKCiAgICBjb25zdCBjb21wU2V0ID0gbmV3IFNldCgpOwogICAgc2VsZWN0ZWQuZm9yRWFjaChzID0+IChzLmNvbXBsaWFuY2UgfHwgW10pLmZvckVhY2goYyA9PiBjb21wU2V0LmFkZChjKSkpOwoKICAgIHJldHVybiB7CiAgICAgICAgc2VydmljZXM6IHNlbGVjdGVkLAogICAgICAgIHJhbmtlZCwKICAgICAgICBjb21wbGlhbmNlOiBbLi4uY29tcFNldF0KICAgIH07Cn0KCmZ1bmN0aW9uIHJhbmtQbGF0Zm9ybXMoaXRlbXMpIHsKICAgIGNvbnN0IHBtYXAgPSBuZXcgTWFwKCk7CgogICAgaXRlbXMuZm9yRWFjaChzID0+IHsKICAgICAgICAocy5wcmltYXJ5IHx8IFtdKS5mb3JFYWNoKHBpZCA9PiB7CiAgICAgICAgICAgIGlmICghcG1hcC5oYXMocGlkKSkgcG1hcC5zZXQocGlkLCB7IGlkOiBwaWQsIHNjb3JlOiAwLCBwcmltYXJ5X2hpdHM6IDAsIHNlY29uZGFyeV9oaXRzOiAwLCBpdGVtczogW10gfSk7CiAgICAgICAgICAgIGNvbnN0IGUgPSBwbWFwLmdldChwaWQpOwogICAgICAgICAgICBlLnNjb3JlICs9IDI7CiAgICAgICAgICAgIGUucHJpbWFyeV9oaXRzICs9IDE7CiAgICAgICAgICAgIGlmICghZS5pdGVtcy5pbmNsdWRlcyhzLmlkKSkgZS5pdGVtcy5wdXNoKHMuaWQpOwogICAgICAgIH0pOwogICAgICAgIChzLnNlY29uZGFyeSB8fCBbXSkuZm9yRWFjaChwaWQgPT4gewogICAgICAgICAgICBpZiAoIXBtYXAuaGFzKHBpZCkpIHBtYXAuc2V0KHBpZCwgeyBpZDogcGlkLCBzY29yZTogMCwgcHJpbWFyeV9oaXRzOiAwLCBzZWNvbmRhcnlfaGl0czogMCwgaXRlbXM6IFtdIH0pOwogICAgICAgICAgICBjb25zdCBlID0gcG1hcC5nZXQocGlkKTsKICAgICAgICAgICAgZS5zY29yZSArPSAxOwogICAgICAgICAgICBlLnNlY29uZGFyeV9oaXRzICs9IDE7CiAgICAgICAgICAgIGlmICghZS5pdGVtcy5pbmNsdWRlcyhzLmlkKSkgZS5pdGVtcy5wdXNoKHMuaWQpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgY29uc3QgcmFua2VkID0gWy4uLnBtYXAudmFsdWVzKCldOwogICAgcmFua2VkLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlIHx8IGIucHJpbWFyeV9oaXRzIC0gYS5wcmltYXJ5X2hpdHMpOwogICAgcmV0dXJuIHJhbmtlZDsKfQoKLyogTGEgcGnDuSByaWxldmFudGUgZSwgc2Ugc2VydmUsIHF1ZWxsYSBjaGUgY29wcmUgaW4gbW9kbyBwcmltYXJpbyBwacO5IHJlcXVpc2l0aSByaW1hc3RpIHNjb3BlcnRpICovCmZ1bmN0aW9uIHBpY2tDb3JlUGxhdGZvcm1zKGl0ZW1zKSB7CiAgICBjb25zdCBjYW5kaWRhdGVzID0gcmFua1BsYXRmb3JtcyhpdGVtcykuZmlsdGVyKHAgPT4gcC5wcmltYXJ5X2hpdHMgPj0gMSk7CiAgICBpZiAoIWNhbmRpZGF0ZXMubGVuZ3RoKSByZXR1cm4gW107CiAgICBjb25zdCBmaXJzdCA9IGNhbmRpZGF0ZXNbMF07CiAgICBjb25zdCB1bmNvdmVyZWQgPSBpdGVtcy5maWx0ZXIocyA9PiAhKHMucHJpbWFyeSB8fCBbXSkuaW5jbHVkZXMoZmlyc3QuaWQpKTsKICAgIGxldCBzZWNvbmQgPSBudWxsOwogICAgbGV0IHNlY29uZEhpdHMgPSAwOwogICAgY2FuZGlkYXRlcy5zbGljZSgxKS5mb3JFYWNoKHAgPT4gewogICAgICAgIGNvbnN0IGhpdHMgPSB1bmNvdmVyZWQuZmlsdGVyKHMgPT4gKHMucHJpbWFyeSB8fCBbXSkuaW5jbHVkZXMocC5pZCkpLmxlbmd0aDsKICAgICAgICBpZiAoaGl0cyA+IHNlY29uZEhpdHMpIHsgc2Vjb25kID0gcDsgc2Vjb25kSGl0cyA9IGhpdHM7IH0KICAgIH0pOwogICAgcmV0dXJuIHNlY29uZCA\/IFtmaXJzdC5pZCwgc2Vjb25kLmlkXSA6IFtmaXJzdC5pZF07Cn0KCi8qIENvbXBsZXRhbWVudG86IGxlIHBpYXR0YWZvcm1lIG1pbmltZSBwZXIgY29wcmlyZSBpbiBtb2RvIHByaW1hcmlvIGkgcmVxdWlzaXRpIGxhc2NpYXRpIHNjb3BlcnRpIGRhbGxlIENvcmUuCiAgIFJlc3RpdHVpc2NlIGlkIHBpYXR0YWZvcm1hIOKGkiByZXF1aXNpdGkgY2hlIGNvcHJlLiAqLwpmdW5jdGlvbiBwaWNrQ29tcGxlbWVudFBsYXRmb3JtcyhzZWxlY3RlZCwgcmFua2VkLCBjb3JlSWRzKSB7CiAgICBjb25zdCBmaWxscyA9IG5ldyBNYXAoKTsKICAgIGxldCB1bmNvdmVyZWQgPSBzZWxlY3RlZC5maWx0ZXIocyA9PiAhKHMucHJpbWFyeSB8fCBbXSkuc29tZShwaWQgPT4gY29yZUlkcy5oYXMocGlkKSkpOwogICAgd2hpbGUgKHVuY292ZXJlZC5sZW5ndGgpIHsKICAgICAgICBsZXQgYmVzdCA9IG51bGw7CiAgICAgICAgbGV0IGJlc3RJdGVtcyA9IFtdOwogICAgICAgIHJhbmtlZC5mb3JFYWNoKHAgPT4gewogICAgICAgICAgICBpZiAoY29yZUlkcy5oYXMocC5pZCkgfHwgZmlsbHMuaGFzKHAuaWQpKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IGNvdmVyZWQgPSB1bmNvdmVyZWQuZmlsdGVyKHMgPT4gKHMucHJpbWFyeSB8fCBbXSkuaW5jbHVkZXMocC5pZCkpOwogICAgICAgICAgICBpZiAoY292ZXJlZC5sZW5ndGggPiBiZXN0SXRlbXMubGVuZ3RoKSB7IGJlc3QgPSBwOyBiZXN0SXRlbXMgPSBjb3ZlcmVkOyB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKCFiZXN0KSBicmVhazsKICAgICAgICBmaWxscy5zZXQoYmVzdC5pZCwgYmVzdEl0ZW1zLm1hcChzID0+IHMuaWQpKTsKICAgICAgICB1bmNvdmVyZWQgPSB1bmNvdmVyZWQuZmlsdGVyKHMgPT4gIWJlc3RJdGVtcy5pbmNsdWRlcyhzKSk7CiAgICB9CiAgICByZXR1cm4gZmlsbHM7Cn0KCi8qIExlIENvcmUgbmFzY29ubyBkYWxsYSBzZWxlemlvbmUgaW5pemlhbGU7IHVuYSBDb3JlIHZpZW5lIHNvc3RpdHVpdGEgc29sbyBzZSBub24gY29wcmUgcGnDuSBhbGN1biByZXF1aXNpdG8gKi8KZnVuY3Rpb24gcmVzb2x2ZUNvcmVQbGF0Zm9ybXMoc2VsZWN0ZWQpIHsKICAgIGNvbnN0IHByb2ZpbGUgPSBnZXRQcm9maWxlKCk7CiAgICBjb25zdCBiYXNlID0gcHJvZmlsZSA\/IGdldFByb2ZpbGVEZWZhdWx0cyhwcm9maWxlKS5tYXAoaWQgPT4gSVRFTVNfREFUQS5maW5kKHMgPT4gcy5pZCA9PT0gaWQpKS5maWx0ZXIoQm9vbGVhbikgOiBzZWxlY3RlZDsKICAgIGNvbnN0IGluaXRpYWwgPSBwaWNrQ29yZVBsYXRmb3JtcyhiYXNlKTsKICAgIGNvbnN0IGtlcHQgPSBpbml0aWFsLmZpbHRlcihwaWQgPT4gc2VsZWN0ZWQuc29tZShzID0+IChzLnByaW1hcnkgfHwgW10pLmluY2x1ZGVzKHBpZCkpKTsKICAgIGlmIChrZXB0Lmxlbmd0aCA9PT0gaW5pdGlhbC5sZW5ndGgpIHJldHVybiBrZXB0OwogICAgcGlja0NvcmVQbGF0Zm9ybXMoc2VsZWN0ZWQpLmZvckVhY2gocGlkID0+IHsKICAgICAgICBpZiAoa2VwdC5sZW5ndGggPCBpbml0aWFsLmxlbmd0aCAmJiAha2VwdC5pbmNsdWRlcyhwaWQpKSBrZXB0LnB1c2gocGlkKTsKICAgIH0pOwogICAgcmV0dXJuIGtlcHQ7Cn0KCi8qIExlIHBpYXR0YWZvcm1lIGNoZSBmYW5ubyBwYXJ0ZSBkZWxsYSBjb25maWd1cmF6aW9uZTogdHV0dGUgdHJhbm5lIGxlIGZhY29sdGF0aXZlIG5vbiBhZ2dpdW50ZSAqLwpmdW5jdGlvbiBpbmNsdWRlZFBsYXRmb3JtcyhyYW5rZWQpIHsKICAgIHJldHVybiByYW5rZWQ7Cn0KCi8qIFNvbG8gaSBmbHVzc2kgdHJhIHBpYXR0YWZvcm1lIGluY2x1c2UgKENvcmUgZSBDb21wbGV0YW1lbnRvKTogbGUgZmFjb2x0YXRpdmUgbm9uIHNvbm8gYW5jb3JhIHNjZWx0ZSAqLwpmdW5jdGlvbiBnZXREYXRhRmxvd3MocmFua2VkKSB7CiAgICBjb25zdCBpZHMgPSBuZXcgU2V0KGluY2x1ZGVkUGxhdGZvcm1zKHJhbmtlZCkubWFwKHAgPT4gcC5pZCkpOwogICAgcmV0dXJuIERBVEFfRkxPV1MuZmlsdGVyKGYgPT4gZi5wYXRoLmV2ZXJ5KHBpZCA9PiBpZHMuaGFzKHBpZCkpKTsKfQoKZnVuY3Rpb24gcmVuZGVyRmxvd0NhcmRzKHJhbmtlZCkgewogICAgY29uc3QgZmxvd3MgPSBnZXREYXRhRmxvd3MocmFua2VkKTsKICAgIGlmICghZmxvd3MubGVuZ3RoKSB7CiAgICAgICAgcmV0dXJuIGA8cCBjbGFzcz0iYWNoLWZsb3ctZW1wdHkiPiR7dCgnc3RlcDMuZmxvd3NFbXB0eScsIHsgbmFtZTogcmFua2VkLmxlbmd0aCA\/IFBMQVRGT1JNU19EQVRBW3JhbmtlZFswXS5pZF0ubmFtZSA6IFBMQVRGT1JNU19EQVRBLmRoLm5hbWUgfSl9PC9wPmA7CiAgICB9CiAgICBjb25zdCBwaWxsID0gcGlkID0+IGA8c3BhbiBjbGFzcz0iYWNoLWZsb3ctcGlsbCIgc3R5bGU9Ii0tcGZtLWNvbG9yOiR7UExBVEZPUk1TX0RBVEFbcGlkXS5jb2xvcn0iPjxpIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+JHtzaG9ydE5hbWUocGlkKX08L3NwYW4+YDsKICAgIHJldHVybiBmbG93cy5tYXAoZiA9PiBgCiAgICAgICAgPGRpdiBjbGFzcz0iYWNoLWZsb3ciIHN0eWxlPSItLXBmbS1jb2xvcjoke1BMQVRGT1JNU19EQVRBW2YucGF0aFswXV0uY29sb3J9Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLWZsb3dfX3BhdGgiPgogICAgICAgICAgICAgICAgICR7Zi5wYXRoLm1hcChwaWxsKS5qb2luKGA8aSBjbGFzcz0iYWNoLWljbyBhY2gtaWNvLS1hcnJvdy1yaWdodCBhY2gtZmxvd19fYXJyb3ciIGFyaWEtbGFiZWw9IiR7dCgnc3RlcDMuZmxvd1RvJyl9Ij48L2k+YCl9CiAgICAgICAgICAgICAgICAke2YucGF0aC5sZW5ndGggPT09IDEgPyBgPHNwYW4gY2xhc3M9ImFjaC1mbG93X19zY29wZSI+JHt0KCdzdGVwMy5mbG93V2hvbGVTdGFjaycpfTwvc3Bhbj5gIDogJyd9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cCBjbGFzcz0iYWNoLWZsb3dfX3RleHQiPiR7TChmLnRleHQpfTwvcD4KICAgICAgICA8L2Rpdj4KICAgIGApLmpvaW4oJycpICsgYDxwIGNsYXNzPSJhY2gtZmxvdy1lbmQiPiR7dCgnc3RlcDMuZmxvd3NFbmQnKX08L3A+YDsKfQoKLyogPT09PT09PT09PT09IFBBU1NPIDE6IFBST0ZJTE8gPT09PT09PT09PT09ICovCmZ1bmN0aW9uIHJlbmRlck1hY3JvR3JpZCgpIHsKICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWNyb0dyaWQnKTsKICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBNQUNST19FTlRJVElFUy5tYXAobSA9PiB7CiAgICAgICAgY29uc3QgaXNTZWwgPSAhd2l6YXJkLmlzRXhwbG9yYXRpb25Nb2RlICYmIHdpemFyZC5zZWxlY3RlZE1hY3JvSWQgPT09IG0uaWQ7CiAgICAgICAgY29uc3QgY29yZSA9IGdldFByb2ZpbGVEZWZhdWx0cyhtKS5sZW5ndGg7CiAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhY2gtbWFjcm8tY2FyZCR7aXNTZWwgPyAnIGlzLXNlbGVjdGVkJyA6ICcnfSIgZGF0YS1pZD0iJHttLmlkfSIgYXJpYS1wcmVzc2VkPSIke2lzU2VsfSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYWNoLXJhZGlvLWRvdCIgYXJpYS1oaWRkZW49InRydWUiPjxpIGNsYXNzPSJhY2gtaWNvIGFjaC1pY28tLWNoZWNrIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1tYWNyby1jYXJkX19pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHttLmljb25Tdmd9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1tYWNyby1jYXJkX190aXRsZSI+JHtMKG0ubmFtZSl9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1tYWNyby1jYXJkX19zdWJ0aXRsZSI+JHtMKG0uc3VidGl0bGUpfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY2gtbWFjcm8tY2FyZF9fZGVzYyI+JHtMKG0uZGVzYyl9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1tYWNyby1jYXJkX190YWciPjxpIGNsYXNzPSJhY2gtaWNvIGFjaC1pY28tLWxpc3QtY2hlY2siIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+ICR7dCgnc3RlcDEucmVhZHknLCB7IG46IGNvcmUgfSl9PC9zcGFuPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICBgOwogICAgfSkuam9pbignJyk7CgogICAgY29uc3QgYmFubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGxvcmVCYW5uZXInKTsKICAgIGJhbm5lci5jbGFzc0xpc3QudG9nZ2xlKCdpcy1zZWxlY3RlZCcsIHdpemFyZC5pc0V4cGxvcmF0aW9uTW9kZSk7CiAgICBiYW5uZXIuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCB3aXphcmQuaXNFeHBsb3JhdGlvbk1vZGUpOwoKICAgIHVwZGF0ZVN0ZXAxQmFyKCk7Cn0KCmZ1bmN0aW9uIHVwZGF0ZVN0ZXAxQmFyKCkgewogICAgY29uc3QgaW5mbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzMUluZm8nKTsKICAgIGNvbnN0IHAgPSBnZXRQcm9maWxlKCk7CiAgICBjb25zdCBuID0gd2l6YXJkLnNlbGVjdGVkU2VydmljZXMubGVuZ3RoOwogICAgaWYgKHdpemFyZC5pc0V4cGxvcmF0aW9uTW9kZSkgewogICAgICAgIGluZm8uaW5uZXJIVE1MID0gdCgnc3RlcDEuaW5mb0ZyZWUnKTsKICAgIH0gZWxzZSBpZiAocCkgewogICAgICAgIGluZm8uaW5uZXJIVE1MID0gdCgnc3RlcDEuaW5mb1Byb2ZpbGUnLCB7IG5hbWU6IEwocC5uYW1lKSwgbiB9KTsKICAgIH0gZWxzZSB7CiAgICAgICAgaW5mby5pbm5lckhUTUwgPSB0KCdzdGVwMS5pbmZvRW1wdHknKTsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5TdGVwMU5leHQnKS5kaXNhYmxlZCA9ICFoYXNQcm9maWxlKCk7Cn0KCmZ1bmN0aW9uIHNlbGVjdE1hY3JvKGlkKSB7CiAgICBjb25zdCBtID0gTUFDUk9fRU5USVRJRVMuZmluZCh4ID0+IHguaWQgPT09IGlkKTsKICAgIGlmICghbSkgcmV0dXJuOwogICAgY29uc3QgY2hhbmdlZCA9IHdpemFyZC5pc0V4cGxvcmF0aW9uTW9kZSB8fCB3aXphcmQuc2VsZWN0ZWRNYWNyb0lkICE9PSBpZDsKICAgIGlmIChjaGFuZ2VkIHx8IHdpemFyZC5zZWxlY3RlZFNlcnZpY2VzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIGNvbnN0IGhhZENob2ljZSA9IGhhc1Byb2ZpbGUoKTsKICAgICAgICB3aXphcmQuaXNFeHBsb3JhdGlvbk1vZGUgPSBmYWxzZTsKICAgICAgICB3aXphcmQuc2VsZWN0ZWRNYWNyb0lkID0gaWQ7CiAgICAgICAgd2l6YXJkLnNlbGVjdGVkU2VydmljZXMgPSBnZXRQcm9maWxlRGVmYXVsdHMobSk7CiAgICAgICAgd2l6YXJkLmFkZGVkUGxhdGZvcm1zID0gW107CiAgICAgICAgaWYgKGhhZENob2ljZSkgc2hvd1RvYXN0KHQoJ3RvYXN0LnByb2ZpbGVDaGFuZ2VkJywgeyBuYW1lOiBMKG0ubmFtZSkgfSksICdpbmZvJyk7CiAgICB9CiAgICByZW5kZXJNYWNyb0dyaWQoKTsKICAgIG9uU2VsZWN0aW9uQ2hhbmdlZCgpOwp9CgpmdW5jdGlvbiBzZWxlY3RFeHBsb3JhdGlvbigpIHsKICAgIGlmICghd2l6YXJkLmlzRXhwbG9yYXRpb25Nb2RlKSB7CiAgICAgICAgY29uc3QgaGFkQ2hvaWNlID0gaGFzUHJvZmlsZSgpOwogICAgICAgIHdpemFyZC5pc0V4cGxvcmF0aW9uTW9kZSA9IHRydWU7CiAgICAgICAgd2l6YXJkLnNlbGVjdGVkTWFjcm9JZCA9IG51bGw7CiAgICAgICAgd2l6YXJkLnNlbGVjdGVkU2VydmljZXMgPSBbXTsKICAgICAgICB3aXphcmQuYWRkZWRQbGF0Zm9ybXMgPSBbXTsKICAgICAgICBpZiAoaGFkQ2hvaWNlKSBzaG93VG9hc3QodCgndG9hc3QucHJvZmlsZVJlbW92ZWQnKSwgJ2luZm8nKTsKICAgIH0KICAgIHJlbmRlck1hY3JvR3JpZCgpOwogICAgb25TZWxlY3Rpb25DaGFuZ2VkKCk7Cn0KCi8qID09PT09PT09PT09PSBQQVNTTyAyOiBSRVFVSVNJVEkgPT09PT09PT09PT09ICovCi8qIFRhZyBmaWx0cm8gcGVyIGFyZWEgZGVsIHJlcXVpc2l0byAqLwpmdW5jdGlvbiByZW5kZXJGaWx0ZXJUYWdzKCkgewogICAgY29uc3QgdGFnID0gKHR5cGUsIHZhbCwgbGFiZWwsIGNvbG9yLCBvbikgPT4KICAgICAgICBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhY2gtdGFnJHtvbiA\/ICcgaXMtb24nIDogJyd9IiBkYXRhLWZpbHRlcj0iJHt0eXBlfSIgZGF0YS12YWw9IiR7dmFsfSIgYXJpYS1wcmVzc2VkPSIke29ufSIke2NvbG9yID8gYCBzdHlsZT0iLS10YWctY29sb3I6JHtjb2xvcn0iYCA6ICcnfT4ke2NvbG9yID8gJzxpIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+JyA6ICcnfSR7bGFiZWx9PC9idXR0b24+YDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWx0ZXJUYWdzJykuaW5uZXJIVE1MID0KICAgICAgICB0YWcoJ2NhdCcsICdhbGwnLCB0KCdzdGVwMi5maWx0ZXJBbGwnKSwgJycsIHdpemFyZC5maWx0ZXJDYXQgPT09ICdhbGwnKSArCiAgICAgICAgQ0FUX09SREVSLm1hcChjYXQgPT4gdGFnKCdjYXQnLCBjYXQsIHQoJ2NhdC4nICsgY2F0KSwgJycsIHdpemFyZC5maWx0ZXJDYXQgPT09IGNhdCkpLmpvaW4oJycpOwp9CgpmdW5jdGlvbiByZW5kZXJTdGVwMigpIHsKICAgIHJlbmRlckZpbHRlclRhZ3MoKTsKICAgIHJlbmRlclN0ZXAyU3VidGl0bGUoKTsKICAgIHJlbmRlclJlY0hpbnQoKTsKICAgIHJlbmRlclNlcnZpY2VzR3JpZCgpOwogICAgcmVuZGVyTGl2ZVBhbmVsKCk7Cn0KCmZ1bmN0aW9uIHJlbmRlclN0ZXAyU3VidGl0bGUoKSB7CiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwMlN1YnRpdGxlJyk7CiAgICBjb25zdCBwID0gZ2V0UHJvZmlsZSgpOwogICAgaWYgKHApIHsKICAgICAgICBjb25zdCBjb3JlID0gZ2V0UHJvZmlsZURlZmF1bHRzKHApLmxlbmd0aDsKICAgICAgICBlbC5pbm5lckhUTUwgPSB0KCdzdGVwMi5sZWFkUHJvZmlsZScsIHsgbmFtZTogTChwLm5hbWUpLCBuOiBjb3JlIH0pOwogICAgfSBlbHNlIHsKICAgICAgICBlbC50ZXh0Q29udGVudCA9IHQoJ3N0ZXAyLmxlYWRGcmVlJyk7CiAgICB9Cn0KCi8qIExpbmsgIkFnZ2l1bmdpIE4gY29uc2lnbGlhdGkiIGFjY2FudG8gYWxsYSByaWNlcmNhICovCmZ1bmN0aW9uIHJlbmRlclJlY0hpbnQoKSB7CiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNIaW50Jyk7CiAgICBjb25zdCBwID0gZ2V0UHJvZmlsZSgpOwogICAgY29uc3QgbWlzc2luZyA9IHAgPyBwLml0ZW1zLmZpbHRlcihpZCA9PiAhaXNTZWxlY3RlZChpZCkpIDogW107CiAgICBlbC5oaWRkZW4gPSAhbWlzc2luZy5sZW5ndGg7CiAgICBlbC5pbm5lckhUTUwgPSBgPGkgY2xhc3M9ImFjaC1pY28gYWNoLWljby0tcGx1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4gJHt0KCdzdGVwMi5hZGRSZWNvbW1lbmRlZCcsIHsgbjogbWlzc2luZy5sZW5ndGggfSl9YDsKfQoKZnVuY3Rpb24gZ2V0RmlsdGVyZWRJdGVtcygpIHsKICAgIGNvbnN0IHEgPSB3aXphcmQuc2VhcmNoUXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKCk7CiAgICByZXR1cm4gSVRFTVNfREFUQS5maWx0ZXIocyA9PiB7CiAgICAgICAgaWYgKHdpemFyZC5maWx0ZXJDYXQgIT09ICdhbGwnICYmIHMuY2F0ZWdvcnkgIT09IHdpemFyZC5maWx0ZXJDYXQpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoIXEpIHJldHVybiB0cnVlOwogICAgICAgIGNvbnN0IHRleHQgPSBbCiAgICAgICAgICAgIEwocy5sYWJlbE5vcm1hbCksIEwocy5sYWJlbFRlY2gpLCBMKHMuc3VidGl0bGUubm9ybWFsKSwgTChzLnN1YnRpdGxlLnRlY2gpLAogICAgICAgICAgICAocy5jb21wbGlhbmNlIHx8IFtdKS5qb2luKCcgJyksCiAgICAgICAgICAgIChzLnByaW1hcnkgfHwgW10pLm1hcChwaWQgPT4gUExBVEZPUk1TX0RBVEFbcGlkXS5uYW1lKS5qb2luKCcgJykKICAgICAgICBdLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIHJldHVybiB0ZXh0LmluY2x1ZGVzKHEpOwogICAgfSk7Cn0KCi8qIERpdmlzaW9uaSBkZWwgcmVxdWlzaXRvIGluIHVuYSByaWdhOiBwYWxsaW5vIHBpZW5vID0gbGEgZ3VpZGEgKHByaW1hcnkpLCB2dW90byA9IGxhIGFmZmlhbmNhIChzZWNvbmRhcnkpLgogICBDb3NhIGZhIGNpYXNjdW5hIMOoIHNwaWVnYXRvIGFsIHBhc3NvIDMgKi8KZnVuY3Rpb24gcmVuZGVyV2hvKHMpIHsKICAgIGNvbnN0IGRpdiA9IChwaWQsIHJvbGUpID0+IGA8c3BhbiBjbGFzcz0iYWNoLXdob19fZGl2IGFjaC13aG9fX2Rpdi0tJHtyb2xlfSIgc3R5bGU9Ii0tcGZtLWNvbG9yOiR7UExBVEZPUk1TX0RBVEFbcGlkXS5jb2xvcn0iPjxpIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+JHtlc2NhcGVIdG1sKHNob3J0TmFtZShwaWQpKX08c3BhbiBjbGFzcz0iYWNoLXNyLW9ubHkiPiAoJHt0KCd3aG8uJyArIHJvbGUpfSk8L3NwYW4+PC9zcGFuPmA7CiAgICByZXR1cm4gYDxzcGFuIGNsYXNzPSJhY2gtd2hvIj4keyhzLnByaW1hcnkgfHwgW10pLm1hcChwaWQgPT4gZGl2KHBpZCwgJ2xlYWQnKSkuam9pbignJyl9JHsocy5zZWNvbmRhcnkgfHwgW10pLm1hcChwaWQgPT4gZGl2KHBpZCwgJ3N1cHBvcnQnKSkuam9pbignJyl9PC9zcGFuPmA7Cn0KCmZ1bmN0aW9uIHJlbmRlclNlcnZpY2VDYXJkKHMsIHJlY0lkcykgewogICAgY29uc3QgaXNDaGVja2VkID0gaXNTZWxlY3RlZChzLmlkKTsKICAgIGNvbnN0IGlzUmVjID0gcmVjSWRzLmluY2x1ZGVzKHMuaWQpOwogICAgcmV0dXJuIGAKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgcm9sZT0iY2hlY2tib3giIGFyaWEtY2hlY2tlZD0iJHtpc0NoZWNrZWR9IiBjbGFzcz0iYWNoLXNydi1jYXJkJHtpc0NoZWNrZWQgPyAnIGlzLWNoZWNrZWQnIDogJyd9JHtpc1JlYyA\/ICcgaXMtcmVjb21tZW5kZWQnIDogJyd9IiBkYXRhLWlkPSIke3MuaWR9IiB0aXRsZT0iJHtlc2NhcGVIdG1sKEwocy5sYWJlbFRlY2gpKX0iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYWNoLXNydi1jaGVjayIgYXJpYS1oaWRkZW49InRydWUiPjxpIGNsYXNzPSJhY2gtaWNvIGFjaC1pY28tLWNoZWNrIj48L2k+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYWNoLXNydi1ib2R5Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY2gtc3J2LXRpdGxlIj4ke2VzY2FwZUh0bWwoTChzLmxhYmVsTm9ybWFsKSl9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1zcnYtdGVybSI+JHtlc2NhcGVIdG1sKEwocy5zdWJ0aXRsZS5ub3JtYWwpKX08L3NwYW4+CiAgICAgICAgICAgICAgICAke3JlbmRlcldobyhzKX0KICAgICAgICAgICAgICAgICR7aXNSZWMgPyBgPHNwYW4gY2xhc3M9ImFjaC1yZWMtYmFkZ2UiPiR7dCgnc3RlcDIucmVjb21tZW5kZWQnKX08L3NwYW4+YCA6ICcnfQogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICBgOwp9CgpmdW5jdGlvbiByZW5kZXJTZXJ2aWNlc0dyaWQoKSB7CiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VydmljZXNHcmlkJyk7CiAgICBjb25zdCBmaWx0ZXJlZCA9IGdldEZpbHRlcmVkSXRlbXMoKTsKCiAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLWVtcHR5Ij4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJhY2gtaWNvIGFjaC1pY28tLXNlYXJjaCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4KICAgICAgICAgICAgICAgIDxwPiR7dCgnc3RlcDIubm9SZXN1bHRzJywgeyBxOiBlc2NhcGVIdG1sKHdpemFyZC5zZWFyY2hRdWVyeS50cmltKCkpIH0pfTwvcD4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYWNoLWJ0biBhY2gtYnRuLS1zZWNvbmRhcnkgYWNoLWJ0bi0tc20iIGRhdGEtYWN0aW9uPSJyZXNldC1maWx0ZXJzIj4ke3QoJ3N0ZXAyLnJlc2V0RmlsdGVycycpfTwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBjb25zdCBwID0gZ2V0UHJvZmlsZSgpOwogICAgY29uc3QgcmVjSWRzID0gcCA\/IHAuaXRlbXMgOiBbXTsKCiAgICBjb25zdCBsZWdlbmQgPSBgPHAgY2xhc3M9ImFjaC13aG8tbGVnZW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHNwYW4gY2xhc3M9ImFjaC13aG8tbGVnZW5kX19rIj4ke3QoJ3doby5sZWdlbmRJbnRybycpfTwvc3Bhbj48c3BhbiBjbGFzcz0iYWNoLXdob19fZGl2IGFjaC13aG9fX2Rpdi0tbGVhZCI+PGk+PC9pPiR7dCgnd2hvLmxlZ2VuZExlYWQnKX08L3NwYW4+PHNwYW4gY2xhc3M9ImFjaC13aG9fX2RpdiBhY2gtd2hvX19kaXYtLXN1cHBvcnQiPjxpPjwvaT4ke3QoJ3doby5sZWdlbmRTdXBwb3J0Jyl9PC9zcGFuPjwvcD5gOwogICAgY29udGFpbmVyLmlubmVySFRNTCA9IGxlZ2VuZCArIENBVF9PUkRFUi5maWx0ZXIoY2F0ID0+IGZpbHRlcmVkLnNvbWUocyA9PiBzLmNhdGVnb3J5ID09PSBjYXQpKS5tYXAoY2F0ID0+IHsKICAgICAgICAvKiBJIGNvbnNpZ2xpYXRpIGluIGNpbWEgYWwgZ3J1cHBvOyBsJ29yZGluZSBub24gZGlwZW5kZSBkYWxsYSBzZWxlemlvbmUsIGNvc8OsIGxlIGNhcmQgbm9uIHNpIHNwb3N0YW5vICovCiAgICAgICAgY29uc3QgaXRlbXMgPSBmaWx0ZXJlZC5maWx0ZXIocyA9PiBzLmNhdGVnb3J5ID09PSBjYXQpOwogICAgICAgIGNvbnN0IHN1YnMgPSBbLi4ubmV3IFNldChpdGVtcy5tYXAocyA9PiBzLnN1YikpXTsKICAgICAgICBjb25zdCBjb2xsYXBzZWQgPSB3aXphcmQuY29sbGFwc2VkQ2F0cy5pbmNsdWRlcyhjYXQpOwogICAgICAgIGNvbnN0IHNlbENvdW50ID0gaXRlbXMuZmlsdGVyKHMgPT4gaXNTZWxlY3RlZChzLmlkKSkubGVuZ3RoOwogICAgICAgIHJldHVybiBgCiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhY2gtc3J2LWdyb3VwJHtjb2xsYXBzZWQgPyAnIGlzLWNvbGxhcHNlZCcgOiAnJ30iIGFyaWEtbGFiZWxsZWRieT0iZ3JwLSR7Y2F0fSIgc3R5bGU9Ii0tY2F0LWNvbG9yOiR7Q0FUX01FVEFbY2F0XS5jb2xvcn0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXNydi1ncm91cF9faGVhZCI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhY2gtc3J2LWdyb3VwX190b2dnbGUiIGRhdGEtYWN0aW9uPSJ0b2dnbGUtY29sbGFwc2UiIGRhdGEtY2F0PSIke2NhdH0iIGFyaWEtZXhwYW5kZWQ9IiR7IWNvbGxhcHNlZH0iIGFyaWEtY29udHJvbHM9ImdyaWQtJHtjYXR9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1zcnYtZ3JvdXBfX2ljb24iIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke0NBVF9NRVRBW2NhdF0uaWNvbn08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY2gtc3J2LWdyb3VwX190ZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY2gtc3J2LWdyb3VwX190aXRsZSIgaWQ9ImdycC0ke2NhdH0iPiR7dCgnY2F0LicgKyBjYXQpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY2gtc3J2LWdyb3VwX19kZXNjIj4ke0woQ0FUX01FVEFbY2F0XS5kZXNjKX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImFjaC1pY28gYWNoLWljby0tY2hldnJvbi1kb3duIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY2gtc3J2LWdyb3VwX19tZXRhIiBkYXRhLWNhdD0iJHtjYXR9IiBhcmlhLWxhYmVsPSIke3QoJ3N0ZXAyLmdyb3VwQ291bnQnLCB7IG46IHNlbENvdW50LCB0b3RhbDogaXRlbXMubGVuZ3RoIH0pfSI+PHN0cm9uZz4ke3NlbENvdW50fTwvc3Ryb25nPi8ke2l0ZW1zLmxlbmd0aH08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjaC1zcnYtZ3JpZCIgaWQ9ImdyaWQtJHtjYXR9IiAke2NvbGxhcHNlZCA\/ICdoaWRkZW4nIDogJyd9PiR7c3Vicy5tYXAoc3ViID0+IGA8ZGl2IGNsYXNzPSJhY2gtc3J2LXN1YmhlYWQiPiR7TChTVUJfQVJFQVNbc3ViXSl9PC9kaXY+YCArIGl0ZW1zLmZpbHRlcihzID0+IHMuc3ViID09PSBzdWIpLm1hcChzID0+IHJlbmRlclNlcnZpY2VDYXJkKHMsIHJlY0lkcykpLmpvaW4oJycpKS5qb2luKCcnKX08L2Rpdj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIGA7CiAgICB9KS5qb2luKCcnKTsKfQoKLyogQ2hpYXZlIGRlbGwnYW50ZXByaW1hOiBzaSByaWRpc2VnbmEgc29sbyBzZSBjYW1iaWFubyBsZSBwaWF0dGFmb3JtZSwgbm9uIGEgb2duaSByZXF1aXNpdG8gKi8KbGV0IGxpdmVQYW5lbEtleSA9IG51bGw7CmxldCBsaXZlUGFuZWxPcmRlciA9IFtdOwoKZnVuY3Rpb24gcmVuZGVyTGl2ZVBhbmVsKCkgewogICAgY29uc3QgeyBzZXJ2aWNlcywgcmFua2VkLCBjb21wbGlhbmNlIH0gPSBjb21wdXRlU3RhY2soKTsKCiAgICAvKiBUdXR0ZSBsZSBkaXZpc2lvbmkgY29pbnZvbHRlLCBhbmNoZSBxdWVsbGUgY2hlIGFmZmlhbmNhbm8gc29sdGFudG8gKGNvbWUgbmVsIHZlY2NoaW8gTmF2aWdhdG9yKSAqLwogICAgY29uc3QgbmVlZGVkID0gWy4uLnJhbmtlZF07CgogICAgLyogU2kgcmlkaXNlZ25hIHNvbG8gcXVhbmRvIGVudHJhIG8gZXNjZSB1bmEgcGlhdHRhZm9ybWEgKG8gY2FtYmlhIGxpdmVsbG8pOyBsJ29yZGluZSByZXN0YQogICAgICAgcXVlbGxvIGdpw6AgbW9zdHJhdG8gZSBzb2xvIGxlIG51b3ZlIGNvbXBhaW9ubyBjb24gbCdhbmltYXppb25lICovCiAgICBjb25zdCBrZXkgPSBuZWVkZWQubWFwKHAgPT4gcC5pZCArICc6JyArIHAudGllcikuc29ydCgpLmpvaW4oJywnKSArICd8JyArIExBTkc7CiAgICBpZiAoa2V5ICE9PSBsaXZlUGFuZWxLZXkpIHsKICAgICAgICBsaXZlUGFuZWxLZXkgPSBrZXk7CiAgICAgICAgY29uc3QgcHJldiA9IGxpdmVQYW5lbE9yZGVyOwogICAgICAgIGNvbnN0IHBvcyA9IGlkID0+IChwcmV2LmluY2x1ZGVzKGlkKSA\/IHByZXYuaW5kZXhPZihpZCkgOiBwcmV2Lmxlbmd0aCk7CiAgICAgICAgbmVlZGVkLnNvcnQoKGEsIGIpID0+IFRJRVJfT1JERVIuaW5kZXhPZihhLnRpZXIpIC0gVElFUl9PUkRFUi5pbmRleE9mKGIudGllcikgfHwgcG9zKGEuaWQpIC0gcG9zKGIuaWQpKTsKICAgICAgICBsaXZlUGFuZWxPcmRlciA9IG5lZWRlZC5tYXAocCA9PiBwLmlkKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGl2ZVBmbUxpc3QnKS5pbm5lckhUTUwgPSBuZWVkZWQubGVuZ3RoCiAgICAgICAgICAgID8gbmVlZGVkLm1hcChwID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHBmbSA9IFBMQVRGT1JNU19EQVRBW3AuaWRdOwogICAgICAgICAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2gtbGl2ZV9fcGZtJHtwcmV2LmluY2x1ZGVzKHAuaWQpID8gJycgOiAnIGlzLW5ldyd9IiBzdHlsZT0iLS1wZm0tY29sb3I6JHtwZm0uY29sb3J9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1kb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOiR7cGZtLmNvbG9yfSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1saXZlX19uYW1lIj4ke3Nob3J0TmFtZShwLmlkKX08c3BhbiBjbGFzcz0iYWNoLWxpdmVfX3JvbGUiPiR7TChwZm0ucm9sZSl9PC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1taW5pLXRpZXIgYWNoLW1pbmktdGllci0tJHtUSUVSX0NTU1twLnRpZXJdfSI+JHt0aWVyVGV4dChwLnRpZXIsICdsYWJlbCcpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGA7CiAgICAgICAgICAgIH0pLmpvaW4oJycpCiAgICAgICAgICAgIDogYDxkaXYgY2xhc3M9ImFjaC1saXZlX19lbXB0eSI+JHt0KCdzdGVwMi5wcmV2aWV3RW1wdHknKX08L2Rpdj5gOwogICAgfQoKICAgIGNvbnN0IG4gPSBzZXJ2aWNlcy5sZW5ndGg7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnczJJbmZvJykuaW5uZXJIVE1MID0gbgogICAgICAgID8gYDxzdHJvbmc+JHt0KCd1bml0LnJlcXVpcmVtZW50cycsIHsgbiB9KX08L3N0cm9uZz48c3BhbiBjbGFzcz0iYWNoLWFjdGlvbmJhcl9fYXJyb3ciIGFyaWEtaGlkZGVuPSJ0cnVlIj7ihpI8L3NwYW4+PHN0cm9uZz4ke3QoJ3VuaXQubmVlZGVkUGxhdGZvcm1zJywgeyBuOiBuZWVkZWQubGVuZ3RoIH0pfTwvc3Ryb25nPmAKICAgICAgICA6IHQoJ3N0ZXAyLmluZm9FbXB0eScpOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5TdGVwMk5leHQnKS5kaXNhYmxlZCA9IG4gPT09IDA7Cn0KCmZ1bmN0aW9uIHJlZnJlc2hTdGVwMihmb2N1c0lkKSB7CiAgICByZW5kZXJTdGVwMigpOwogICAgb25TZWxlY3Rpb25DaGFuZ2VkKCk7CiAgICBpZiAoZm9jdXNJZCkgewogICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlcnZpY2VzR3JpZCBbZGF0YS1pZD0iJyArIGZvY3VzSWQgKyAnIl0nKTsKICAgICAgICBpZiAoZWwpIGVsLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsKICAgIH0KfQoKLyogQWdnaW9ybmEgc29sbyBsYSBjYXJkIGNsaWNjYXRhIGUgaSBjb250YXRvcmk6IGxhIGdyaWdsaWEgbm9uIHZpZW5lIHJpZGlzZWduYXRhIGUgbnVsbGEgc2kgc3Bvc3RhICovCmZ1bmN0aW9uIHRvZ2dsZVNlcnZpY2UoaWQpIHsKICAgIGlmIChpc1NlbGVjdGVkKGlkKSkgd2l6YXJkLnNlbGVjdGVkU2VydmljZXMgPSB3aXphcmQuc2VsZWN0ZWRTZXJ2aWNlcy5maWx0ZXIoeCA9PiB4ICE9PSBpZCk7CiAgICBlbHNlIHdpemFyZC5zZWxlY3RlZFNlcnZpY2VzLnB1c2goaWQpOwogICAgY29uc3QgY2FyZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZXJ2aWNlc0dyaWQgW2RhdGEtaWQ9IicgKyBpZCArICciXScpOwogICAgaWYgKCFjYXJkKSByZXR1cm4gcmVmcmVzaFN0ZXAyKGlkKTsKICAgIGNvbnN0IGNoZWNrZWQgPSBpc1NlbGVjdGVkKGlkKTsKICAgIGNhcmQuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtY2hlY2tlZCcsIGNoZWNrZWQpOwogICAgY2FyZC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY2hlY2tlZCcsIGNoZWNrZWQpOwogICAgY29uc3QgaXRlbSA9IElURU1TX0RBVEEuZmluZChzID0+IHMuaWQgPT09IGlkKTsKICAgIGNvbnN0IG1ldGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VydmljZXNHcmlkIC5hY2gtc3J2LWdyb3VwX19tZXRhW2RhdGEtY2F0PSInICsgaXRlbS5jYXRlZ29yeSArICciXScpOwogICAgaWYgKG1ldGEpIHsKICAgICAgICBjb25zdCBpZHMgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2dyaWQtJyArIGl0ZW0uY2F0ZWdvcnkgKyAnIC5hY2gtc3J2LWNhcmQnKV0ubWFwKGMgPT4gYy5kYXRhc2V0LmlkKTsKICAgICAgICBjb25zdCBzZWxDb3VudCA9IGlkcy5maWx0ZXIoaXNTZWxlY3RlZCkubGVuZ3RoOwogICAgICAgIG1ldGEuaW5uZXJIVE1MID0gYDxzdHJvbmc+JHtzZWxDb3VudH08L3N0cm9uZz4vJHtpZHMubGVuZ3RofWA7CiAgICAgICAgbWV0YS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0KCdzdGVwMi5ncm91cENvdW50JywgeyBuOiBzZWxDb3VudCwgdG90YWw6IGlkcy5sZW5ndGggfSkpOwogICAgfQogICAgcmVuZGVyUmVjSGludCgpOwogICAgcmVuZGVyTGl2ZVBhbmVsKCk7CiAgICBvblNlbGVjdGlvbkNoYW5nZWQoKTsKfQoKZnVuY3Rpb24gYWRkUmVjb21tZW5kZWQoKSB7CiAgICBjb25zdCBwID0gZ2V0UHJvZmlsZSgpOwogICAgaWYgKCFwKSByZXR1cm47CiAgICBjb25zdCBtaXNzaW5nID0gcC5pdGVtcy5maWx0ZXIoaWQgPT4gIWlzU2VsZWN0ZWQoaWQpKTsKICAgIHdpemFyZC5zZWxlY3RlZFNlcnZpY2VzLnB1c2goLi4ubWlzc2luZyk7CiAgICByZWZyZXNoU3RlcDIoKTsKICAgIHNob3dUb2FzdCh0KCd0b2FzdC5yZWNvbW1lbmRlZEFkZGVkJywgeyBuOiBtaXNzaW5nLmxlbmd0aCB9KSk7Cn0KCmZ1bmN0aW9uIHNldFNlYXJjaCh2YWx1ZSkgewogICAgd2l6YXJkLnNlYXJjaFF1ZXJ5ID0gdmFsdWU7CiAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZXJ2aWNlU2VhcmNoJyk7CiAgICBpZiAoaW5wdXQudmFsdWUgIT09IHZhbHVlKSBpbnB1dC52YWx1ZSA9IHZhbHVlOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blNlYXJjaENsZWFyJykuaGlkZGVuID0gIXZhbHVlOwogICAgcmVuZGVyU2VydmljZXNHcmlkKCk7Cn0KCi8qID09PT09PT09PT09PSBQQVNTTyAzOiBQSUFUVEFGT1JNRSA9PT09PT09PT09PT0gKi8KZnVuY3Rpb24gcmVuZGVyU3RlcDNSZXN1bHRzKCkgewogICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsYXRmb3Jtc1Jlc3VsdHNDb250YWluZXInKTsKICAgIGNvbnN0IHsgc2VydmljZXMsIHJhbmtlZCwgY29tcGxpYW5jZSB9ID0gY29tcHV0ZVN0YWNrKCk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZXAzU3VidGl0bGUnKS50ZXh0Q29udGVudCA9IHQoJ3N0ZXAzLmxlYWQnLCB7IG46IHNlcnZpY2VzLmxlbmd0aCB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzM0luZm8nKS5pbm5lckhUTUwgPSB0KCdzdGVwMy5pbmZvJywgeyBuOiBpbmNsdWRlZFBsYXRmb3JtcyhyYW5rZWQpLmxlbmd0aCwgYzogY29tcGxpYW5jZS5sZW5ndGggfSk7CgogICAgaWYgKHJhbmtlZC5sZW5ndGggPT09IDApIHsKICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9ImFjaC1lbXB0eSI+JHt0KCdzdGVwMy5lbXB0eScpfTwvZGl2PmA7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zsb3dOYXJyYXRpdmVUZXh0JykuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbXBsaWFuY2VHcmlkJykuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlbmRlckJsb2NrKHRpZXIpIHsKICAgICAgICBjb25zdCBsaXN0ID0gcmFua2VkLmZpbHRlcihwbCA9PiBwbC50aWVyID09PSB0aWVyKTsKICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDApIHJldHVybiAnJzsKICAgICAgICBjb25zdCBjYXJkc0h0bWwgPSBsaXN0Lm1hcChwbCA9PiB7CiAgICAgICAgICAgIGNvbnN0IHBmbSA9IFBMQVRGT1JNU19EQVRBW3BsLmlkXTsKICAgICAgICAgICAgY29uc3QgbGlua2VkID0gcGwuaXRlbXMubWFwKGlpZCA9PiBJVEVNU19EQVRBLmZpbmQoeCA9PiB4LmlkID09PSBpaWQpKS5maWx0ZXIoQm9vbGVhbik7CiAgICAgICAgICAgIGNvbnN0IGxlYWRzID0gcyA9PiAocy5wcmltYXJ5IHx8IFtdKS5pbmNsdWRlcyhwbC5pZCk7CiAgICAgICAgICAgIC8qIER1ZSBncnVwcGkgY29uIHRpdG9sbzogaSByZXF1aXNpdGkgY2hlIGxhIGRpdmlzaW9uZSBndWlkYSBlIHF1ZWxsaSBjaGUgYWZmaWFuY2EgKi8KICAgICAgICAgICAgY29uc3Qgcm9sZUdyb3VwID0gKHJvbGUsIGxpc3QpID0+IGxpc3QubGVuZ3RoID8gYAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXJvbGUtZ3JvdXAgYWNoLXJvbGUtZ3JvdXAtLSR7cm9sZX0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjaC1yb2xlLWdyb3VwX19oZWFkIj4ke3QoJ3doby4nICsgcm9sZSArICdIZWFkJyl9IDxzcGFuPiR7bGlzdC5sZW5ndGh9PC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iYWNoLXJvbGUtbGlzdCI+JHtsaXN0Lm1hcChzID0+IGAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+JHtlc2NhcGVIdG1sKEwocy5sYWJlbE5vcm1hbCkpfTwvc3Ryb25nPjxzcGFuPiR7ZXNjYXBlSHRtbChMKHMucm9sZXNbcGwuaWRdKSl9PC9zcGFuPjwvbGk+YCkuam9pbignJyl9PC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PmAgOiAnJzsKICAgICAgICAgICAgY29uc3QgY2hpcHMgPSByb2xlR3JvdXAoJ2xlYWQnLCBsaW5rZWQuZmlsdGVyKGxlYWRzKSkgKyByb2xlR3JvdXAoJ3N1cHBvcnQnLCBsaW5rZWQuZmlsdGVyKHMgPT4gIWxlYWRzKHMpKSk7CiAgICAgICAgICAgIGNvbnN0IGFjaGlyYWwgPSBwbC5pZCA9PT0gJ2RoJyA\/IFsuLi5uZXcgU2V0KGxpbmtlZC5mbGF0TWFwKHMgPT4gcy5wZiB8fCBbXSkpXSA6IFtdOwoKICAgICAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJhY2gtcGxhdGZvcm0tY2FyZCIgc3R5bGU9Ii0tcGZtLWNvbG9yOiR7cGZtLmNvbG9yfSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXBsYXRmb3JtLXRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iYWNoLXBsYXRmb3JtLW5hbWUiPiR7cGZtLm5hbWV9PC9oMz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2gtcGxhdGZvcm0tcm9sZSI+JHtMKHBmbS5yb2xlKX08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYWNoLXBsYXRmb3JtLW5hcnJhdGl2ZSI+JHtlc2NhcGVIdG1sKGNhcGl0YWxpemUoTChwZm0ubmFycmF0aXZlKSkpfS48L3A+CiAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFjaC1wbGF0Zm9ybS10cmlnZ2VyIiBvcGVuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT4ke3QocGwudGllciA9PT0gJ29wdGlvbmFsJyB8fCBwbC50aWVyID09PSAnYWRkZWQnID8gJ3N0ZXAzLnN0cmVuZ3RoZW5zJyA6ICdzdGVwMy5zZXJ2ZXNGb3InKX0gPHN0cm9uZz4ke3QoJ3VuaXQucmVxdWlyZW1lbnRzJywgeyBuOiBwbC5pdGVtcy5sZW5ndGggfSl9PC9zdHJvbmc+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICAke2NoaXBzfQogICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICAke2FjaGlyYWwubGVuZ3RoID8gYDxkaXYgY2xhc3M9ImFjaC1hY2hpcmFsIj48c3Ryb25nPiR7dCgnc3RlcDMuYWNoaXJhbCcpfTwvc3Ryb25nPjxkaXYgY2xhc3M9ImFjaC10cmlnZ2VyLWNoaXBzIj4ke2FjaGlyYWwubWFwKG4gPT4gYDxzcGFuIGNsYXNzPSJhY2gtdHJpZ2dlci1jaGlwIj4ke2VzY2FwZUh0bWwobil9PC9zcGFuPmApLmpvaW4oJycpfTwvZGl2PjwvZGl2PmAgOiAnJ30KICAgICAgICAgICAgICAgICAgICAke3BsLnRpZXIgPT09ICdhZGRlZCcgPyBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhY2gtYnRuIGFjaC1idG4tLWdob3N0IGFjaC1idG4tLXNtIGFjaC1wbGF0Zm9ybS1hY3Rpb24iIGRhdGEtcmVtb3ZlLXBmbT0iJHtwbC5pZH0iPjxpIGNsYXNzPSJhY2gtaWNvIGFjaC1pY28tLW1pbnVzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiAke3QoJ3N0ZXAzLnJlbW92ZScpfTwvYnV0dG9uPmAgOiAnJ30KICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICAgICAgYDsKICAgICAgICB9KS5qb2luKCcnKTsKCiAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgPGgzIGNsYXNzPSJhY2gtc2VjLXRpdGxlIj4ke3RpZXJUZXh0KHRpZXIsICd0aXRsZScpfSA8c21hbGw+JHt0aWVyVGV4dCh0aWVyLCAnbm90ZScpfTwvc21hbGw+PC9oMz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXBsYXRmb3Jtcy1saXN0Ij4ke2NhcmRzSHRtbH08L2Rpdj4KICAgICAgICBgOwogICAgfQoKICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBUSUVSX09SREVSLm1hcChyZW5kZXJCbG9jaykuam9pbignJyk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zsb3dOYXJyYXRpdmVUZXh0JykuaW5uZXJIVE1MID0gcmVuZGVyRmxvd0NhcmRzKHJhbmtlZCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tcGxpYW5jZUdyaWQnKS5pbm5lckhUTUwgPSBjb21wbGlhbmNlCiAgICAgICAgLm1hcChjID0+ICc8c3BhbiBjbGFzcz0iYWNoLWNvbXAtYmFkZ2UiPicgKyBlc2NhcGVIdG1sKGMpICsgJzwvc3Bhbj4nKQogICAgICAgIC5qb2luKCcnKTsKfQoKLyogVHV0dGkgaSByZXF1aXNpdGkgc2VsZXppb25hdGkgY29sbGVnYXRpIGEgdW5hIHBpYXR0YWZvcm1hOiBzZXJ2b25vIHBlciBjYXBpcmUgcXVhbGkgbW9kdWxpIGF0dGl2YXJlICovCmZ1bmN0aW9uIHBsYXRmb3JtUmVxdWlyZW1lbnROYW1lcyhwbCkgewogICAgcmV0dXJuIHBsLml0ZW1zLm1hcChpaWQgPT4gSVRFTVNfREFUQS5maW5kKHggPT4geC5pZCA9PT0gaWlkKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChzID0+IEwocy5sYWJlbE5vcm1hbCkpOwp9CgovKiA9PT09PT09PT09PT0gUEFTU08gNDogUklFUElMT0dPID09PT09PT09PT09PSAqLwpmdW5jdGlvbiBwcm9maWxlVGl0bGVXaXRoU3ViKCkgewogICAgY29uc3QgcCA9IGdldFByb2ZpbGUoKTsKICAgIHJldHVybiBwID8gYCR7TChwLm5hbWUpfSAoJHtMKHAuc3VidGl0bGUpfSlgIDogdCgnc3RlcDQuZnJlZUNvbmZpZycpOwp9CgpmdW5jdGlvbiByZW5kZXJTdGVwNFN1bW1hcnkoKSB7CiAgICBjb25zdCB7IHNlcnZpY2VzLCByYW5rZWQsIGNvbXBsaWFuY2UgfSA9IGNvbXB1dGVTdGFjaygpOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdW1FbnRpdHknKS50ZXh0Q29udGVudCA9IHByb2ZpbGVUaXRsZVdpdGhTdWIoKTsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VtUGxhdGZvcm1zJykuaW5uZXJIVE1MID0gaW5jbHVkZWRQbGF0Zm9ybXMocmFua2VkKS5tYXAocCA9PiB7CiAgICAgICAgY29uc3QgcGZtID0gUExBVEZPUk1TX0RBVEFbcC5pZF07CiAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXN1bS1wZm0iIHN0eWxlPSItLXBmbS1jb2xvcjoke3BmbS5jb2xvcn0iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1zcGVjLWNoaXAgYWNoLXNwZWMtY2hpcC0tcGZtIj4ke3BmbS5uYW1lfSDCtyAke3RpZXJUZXh0KHAudGllciwgJ2xhYmVsJyl9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjaC1zdW0tcGZtX19yZXFzIiB0aXRsZT0iJHtlc2NhcGVIdG1sKHBsYXRmb3JtUmVxdWlyZW1lbnROYW1lcyhwKS5qb2luKCcsICcpKX0iPiR7cGxhdGZvcm1SZXF1aXJlbWVudE5hbWVzKHApLm1hcChlc2NhcGVIdG1sKS5qb2luKCcsICcpfTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgYDsKICAgIH0pLmpvaW4oJycpOwoKICAgIHJlbmRlckNoaXBMaXN0KCdzdW1TZXJ2aWNlcycsIHNlcnZpY2VzLm1hcChzID0+IGA8c3BhbiBjbGFzcz0iYWNoLXNwZWMtY2hpcCI+JHtlc2NhcGVIdG1sKEwocy5sYWJlbE5vcm1hbCkpfTwvc3Bhbj5gKSk7CiAgICByZW5kZXJDaGlwTGlzdCgnc3VtQ29tcGxpYW5jZScsIGNvbXBsaWFuY2UubWFwKGMgPT4gYDxzcGFuIGNsYXNzPSJhY2gtc3BlYy1jaGlwIGFjaC1zcGVjLWNoaXAtLWNvbXAiPiR7ZXNjYXBlSHRtbChjKX08L3NwYW4+YCkpOwoKICAgIHJlbmRlclByaW50UmVwb3J0KCk7CiAgICBsb2FkUHJpbnRBc3NldHMoKTsKfQoKLyogRWxlbmNvIGRpIGNoaXAgZGVsIHJpZXBpbG9nbzogb2x0cmUgU1VNX0NISVBfTElNSVQgc2kgbW9zdHJhICIrTiBhbHRyaSIsIGNvc8OsIGxhIHNjaGVkYQogICBub24gc2kgYWxsdW5nYSB0cm9wcG8gcXVhbmRvIGkgcmVxdWlzaXRpIHNvbm8gdGFudGkgKi8KY29uc3QgU1VNX0NISVBfTElNSVQgPSA2OwpmdW5jdGlvbiByZW5kZXJDaGlwTGlzdChpZCwgY2hpcHMpIHsKICAgIGNvbnN0IG9wZW4gPSB3aXphcmQuZXhwYW5kZWRDaGlwcy5pbmNsdWRlcyhpZCk7CiAgICBjb25zdCBoaWRkZW4gPSBjaGlwcy5sZW5ndGggLSBTVU1fQ0hJUF9MSU1JVDsKICAgIGNvbnN0IHNob3duID0gb3BlbiB8fCBoaWRkZW4gPD0gMCA\/IGNoaXBzIDogY2hpcHMuc2xpY2UoMCwgU1VNX0NISVBfTElNSVQpOwogICAgY29uc3QgdG9nZ2xlID0gaGlkZGVuID4gMAogICAgICAgID8gYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYWNoLWNoaXAtdG9nZ2xlIiBkYXRhLWFjdGlvbj0idG9nZ2xlLWNoaXBzIiBkYXRhLWxpc3Q9IiR7aWR9IiBhcmlhLWV4cGFuZGVkPSIke29wZW59Ij4ke29wZW4gPyB0KCdzdGVwNC5zaG93TGVzcycpIDogdCgnc3RlcDQuc2hvd01vcmUnLCB7IG46IGhpZGRlbiB9KX08L2J1dHRvbj5gCiAgICAgICAgOiAnJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5pbm5lckhUTUwgPSBzaG93bi5qb2luKCcnKSArIHRvZ2dsZTsKfQoKLyogPT09PT09PT09PT09IFVUSUxJVMOAID09PT09PT09PT09PSAqLwpmdW5jdGlvbiBlc2NhcGVIdG1sKHN0cikgewogICAgaWYgKCFzdHIpIHJldHVybiAnJzsKICAgIHJldHVybiBTdHJpbmcoc3RyKQogICAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpCiAgICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKQogICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JykKICAgICAgICAucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykKICAgICAgICAucmVwbGFjZSgvJy9nLCAnJiMwMzk7Jyk7Cn0KCmZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyKSB7CiAgICByZXR1cm4gc3RyID8gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpIDogJyc7Cn0KCi8qID09PT09PT09PT09PSBET0NVTUVOVE8gREkgU1RBTVBBIChQREYpID09PT09PT09PT09PSAqLwovKiBOdW1lcm8gZGkgcGFnaW5hIG5lbGxhIGxpbmd1YSBhdHRpdmEuIFVuYSBwYWdpbmEgY29uIG5vbWUgKEBwYWdlIGFjaC1lbikgc3UgdW4KICAgZWxlbWVudG8gaW50ZXJubyBmb3J6YXZhIHVuIHNhbHRvIHBhZ2luYSBlIGxhc2NpYXZhIGxhIHByaW1hIHBhZ2luYSBiaWFuY2EgKi8KZnVuY3Rpb24gc2V0UHJpbnRQYWdlRm9vdGVyKCkgewogICAgbGV0IHN0eWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3duUHJpbnRQYWdlU3R5bGUnKTsKICAgIGlmICghc3R5bGUpIHsKICAgICAgICBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICAgICAgc3R5bGUuaWQgPSAnd25QcmludFBhZ2VTdHlsZSc7CiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CiAgICB9CiAgICBzdHlsZS50ZXh0Q29udGVudCA9IGBAbWVkaWEgcHJpbnQgeyBAcGFnZSB7IEBib3R0b20tcmlnaHQgeyBjb250ZW50OiAiJHt0KCdwcmludC5wYWdlJyl9ICIgY291bnRlcihwYWdlKSAiICR7dCgncHJpbnQub2YnKX0gIiBjb3VudGVyKHBhZ2VzKTsgfSB9IH1gOwp9CgpmdW5jdGlvbiByZW5kZXJQcmludFJlcG9ydCgpIHsKICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3blByaW50UmVwb3J0Jyk7CiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuOwogICAgc2V0UHJpbnRQYWdlRm9vdGVyKCk7CgogICAgY29uc3QgeyBzZXJ2aWNlcywgcmFua2VkLCBjb21wbGlhbmNlIH0gPSBjb21wdXRlU3RhY2soKTsKICAgIGNvbnN0IHAgPSBnZXRQcm9maWxlKCk7CiAgICBjb25zdCBkYXRlU3RyID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoTEFORyA9PT0gJ2VuJyA\/ICdlbi1HQicgOiAnaXQtSVQnLCB7IGRheTogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnLCB5ZWFyOiAnbnVtZXJpYycgfSk7CiAgICBjb25zdCBieVRpZXIgPSB0aWVyID0+IHJhbmtlZC5maWx0ZXIocGwgPT4gcGwudGllciA9PT0gdGllcik7CiAgICBjb25zdCBpbmNsdWRlZCA9IGluY2x1ZGVkUGxhdGZvcm1zKHJhbmtlZCk7CiAgICBjb25zdCBmbG93cyA9IGdldERhdGFGbG93cyhyYW5rZWQpOwogICAgY29uc3Qgc2hhcmVVcmwgPSAvXmh0dHBzPzovLnRlc3Qod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSA\/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogJyc7CgogICAgLyogRGl2aXNpb25lIGNvbWUgdGFnIGRlbCBwYXNzbyA0OiBub21lIMK3IGxpdmVsbG8gKENvcmUsIENvbXBsZXRhbWVudG8sIEFmZmlhbmNhKSBuZWwgY29sb3JlIGRlbGxhIGRpdmlzaW9uZSAqLwogICAgY29uc3QgcHJUYWcgPSBwbCA9PiBgPHNwYW4gY2xhc3M9ImFjaC1wci10YWciIHN0eWxlPSItLXBmbS1jb2xvcjoke1BMQVRGT1JNU19EQVRBW3BsLmlkXS5jb2xvcn0iPiR7ZXNjYXBlSHRtbChQTEFURk9STVNfREFUQVtwbC5pZF0ubmFtZSl9IMK3ICR7dGllclRleHQocGwudGllciwgJ2xhYmVsJyl9PC9zcGFuPmA7CiAgICAvKiBOZWkgY29sbGVnYW1lbnRpIGJhc3RhIGlsIG5vbWUgbmVsIGNvbG9yZSBkZWxsYSBkaXZpc2lvbmUgKi8KICAgIGNvbnN0IHByRGl2ID0gcGlkID0+IGA8c3BhbiBjbGFzcz0iYWNoLXByLWRpdiIgc3R5bGU9Ii0tcGZtLWNvbG9yOiR7UExBVEZPUk1TX0RBVEFbcGlkXS5jb2xvcn0iPiR7ZXNjYXBlSHRtbChzaG9ydE5hbWUocGlkKSl9PC9zcGFuPmA7CgogICAgY29uc3QgcGZtQmxvY2sgPSBwbCA9PiB7CiAgICAgICAgY29uc3QgcGZtID0gUExBVEZPUk1TX0RBVEFbcGwuaWRdOwogICAgICAgIGNvbnN0IGNoaXBzID0gcGwuaXRlbXMubWFwKGlpZCA9PiBJVEVNU19EQVRBLmZpbmQoeCA9PiB4LmlkID09PSBpaWQpKS5maWx0ZXIoQm9vbGVhbikKICAgICAgICAgICAgLm1hcChzID0+IGA8YnI+JHsocy5wcmltYXJ5IHx8IFtdKS5pbmNsdWRlcyhwbC5pZCkgPyAnPGI+JyArIGVzY2FwZUh0bWwoTChzLmxhYmVsTm9ybWFsKSkgKyAnPC9iPicgOiBlc2NhcGVIdG1sKEwocy5sYWJlbE5vcm1hbCkpfTogJHtlc2NhcGVIdG1sKEwocy5yb2xlc1twbC5pZF0pKX1gKQogICAgICAgICAgICAuam9pbignJyk7CiAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXByLXBmbSIgc3R5bGU9Ii0tcGZtLWNvbG9yOiR7cGZtLmNvbG9yfSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2gtcHItcGZtX19oZWFkIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYWNoLXByLWRvdCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY2gtcHItcGZtX19uYW1lIj4ke2VzY2FwZUh0bWwocGZtLm5hbWUpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYWNoLXByLXBmbV9fcm9sZSI+JHtlc2NhcGVIdG1sKEwocGZtLnJvbGUpKX08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhY2gtcHItcGZtX19kZXNjIj4ke2VzY2FwZUh0bWwoY2FwaXRhbGl6ZShMKHBmbS5uYXJyYXRpdmUpKSl9LjwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhY2gtcHItcGZtX19mb3IiPjxzdHJvbmc+JHt0KCdwcmludC5saW5rZWQnKX08L3N0cm9uZz4gJHtjaGlwc308L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIGA7CiAgICB9OwoKICAgIC8qIFRpdG9sbyBkZWwgZ3J1cHBvIGUgcHJpbWEgY2FyZCByZXN0YW5vIGluc2llbWU7IGBsZWFkYCAodGl0b2xvIGRpIHNlemlvbmUpIHNpIGFnZ2FuY2lhIGFsIHByaW1vIGdydXBwbyAqLwogICAgY29uc3QgcGZtR3JvdXAgPSAodGllciwgbGVhZCA9ICcnKSA9PiB7CiAgICAgICAgY29uc3QgbGlzdCA9IGJ5VGllcih0aWVyKTsKICAgICAgICBpZiAoIWxpc3QubGVuZ3RoKSByZXR1cm4gJyc7CiAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXByLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjaC1wci1rZWVwIj4KICAgICAgICAgICAgICAgICAgICAke2xlYWR9CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJhY2gtcHItaDMiPiR7dGllclRleHQodGllciwgJ3RpdGxlJyl9IDxzcGFuPiR7dGllclRleHQodGllciwgJ25vdGUnKX08L3NwYW4+PC9oMz4KICAgICAgICAgICAgICAgICAgICAke3BmbUJsb2NrKGxpc3RbMF0pfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAke2xpc3Quc2xpY2UoMSkubWFwKHBmbUJsb2NrKS5qb2luKCcnKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgYDsKICAgIH07CgogICAgY29uc3QgcGZtSW50cm8gPSBgCiAgICAgICAgPGgyIGNsYXNzPSJhY2gtcHItaDIiPjxzcGFuIGNsYXNzPSJhY2gtcHItbnVtIj4yPC9zcGFuPiR7dCgncHJpbnQucGZtVGl0bGUnKX08L2gyPgogICAgICAgIDxwIGNsYXNzPSJhY2gtcHItbGVhZCI+JHt0KCdwcmludC5wZm1MZWFkQ29yZScpfSR7YnlUaWVyKCdjb21wbGVtZW50JykubGVuZ3RoID8gdCgncHJpbnQucGZtTGVhZENvbXBsZW1lbnQnKSA6ICcnfSR7YnlUaWVyKCdhZGRlZCcpLmxlbmd0aCA\/IHQoJ3ByaW50LnBmbUxlYWRBZGRlZCcpIDogJyd9JHt0KCdwcmludC5wZm1MZWFkRW5kJyl9PC9wPmA7CgogICAgY29uc3QgZmxvd3NIdG1sID0gZmxvd3MubGVuZ3RoID8gZmxvd3MubWFwKGYgPT4gYAogICAgICAgIDxkaXYgY2xhc3M9ImFjaC1wci1mbG93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXByLWZsb3dfX3BhdGgiPgogICAgICAgICAgICAgICAgJHtmLnBhdGgubWFwKHBpZCA9PiBwckRpdihwaWQpKS5qb2luKCc8c3BhbiBjbGFzcz0iYWNoLXByLWFycm93Ij7ihpI8L3NwYW4+Jyl9JHtmLnBhdGgubGVuZ3RoID09PSAxID8gJyDCtyAnICsgdCgnc3RlcDMuZmxvd1dob2xlU3RhY2snKSA6ICcnfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHAgY2xhc3M9ImFjaC1wci1mbG93X190ZXh0Ij4ke0woZi50ZXh0KX08L3A+CiAgICAgICAgPC9kaXY+CiAgICBgKS5qb2luKCcnKSArIGA8cCBjbGFzcz0iYWNoLXByLW11dGVkIj4ke3QoJ3N0ZXAzLmZsb3dzRW5kJyl9PC9wPmAgOiBgPHAgY2xhc3M9ImFjaC1wci1tdXRlZCI+JHt0KCdzdGVwMy5mbG93c0VtcHR5JywgeyBuYW1lOiByYW5rZWQubGVuZ3RoID8gUExBVEZPUk1TX0RBVEFbcmFua2VkWzBdLmlkXS5uYW1lIDogUExBVEZPUk1TX0RBVEEuZGgubmFtZSB9KX08L3A+YDsKCiAgICBjb25zdCByZXFSb3dzID0gQ0FUX09SREVSLm1hcChjYXQgPT4gewogICAgICAgIGNvbnN0IGxpc3QgPSBzZXJ2aWNlcy5maWx0ZXIocyA9PiBzLmNhdGVnb3J5ID09PSBjYXQpOwogICAgICAgIGlmICghbGlzdC5sZW5ndGgpIHJldHVybiAnJzsKICAgICAgICByZXR1cm4gYAogICAgICAgICAgICA8dHIgY2xhc3M9ImFjaC1wci10YWJsZV9fY2F0Ij48dGQgY29sc3Bhbj0iMyI+JHt0KCdjYXQuJyArIGNhdCl9PC90ZD48L3RyPgogICAgICAgICAgICAke2xpc3QubWFwKHMgPT4gYAogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPiR7ZXNjYXBlSHRtbChMKHMubGFiZWxOb3JtYWwpKX08L3N0cm9uZz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD4ke2VzY2FwZUh0bWwoTChzLnN1YnRpdGxlLm5vcm1hbCkpfTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPiR7aW5jbHVkZWQuZmlsdGVyKHBsID0+IHBsLml0ZW1zLmluY2x1ZGVzKHMuaWQpKQogICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gKHMucHJpbWFyeSB8fCBbXSkuaW5jbHVkZXMoYi5pZCkgLSAocy5wcmltYXJ5IHx8IFtdKS5pbmNsdWRlcyhhLmlkKSkKICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChwclRhZykKICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJycpfTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICBgKS5qb2luKCcnKX0KICAgICAgICBgOwogICAgfSkuam9pbignJyk7CgogICAgY29udGFpbmVyLmlubmVySFRNTCA9IGAKICAgICAgICA8aGVhZGVyIGNsYXNzPSJhY2gtcHItaGVhZGVyIj4KICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIGNsYXNzPSJhY2gtcHItbG9nbyIgc3JjPSIke0xPR09fVVJMfSIgYWx0PSJXZTQgSGVhbHRoY2FyZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjaC1wci1oZWFkZXJfX21ldGEiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNoLXByLWhlYWRlcl9fdGl0bGUiPiR7dCgncHJpbnQudGl0bGUnKX08L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+JHtkYXRlU3RyfTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2hlYWRlcj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFjaC1wci1pbnRybyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjaC1wci1sYWJlbCI+JHt0KCdwcmludC5wcm9maWxlJyl9PC9kaXY+CiAgICAgICAgICAgIDxoMSBjbGFzcz0iYWNoLXByLWgxIj4ke2VzY2FwZUh0bWwocCA\/IEwocC5uYW1lKSA6IHQoJ3N0ZXA0LmZyZWVDb25maWcnKSl9JHtwID8gYCA8c3Bhbj4ke2VzY2FwZUh0bWwoTChwLnN1YnRpdGxlKSl9PC9zcGFuPmAgOiAnJ308L2gxPgogICAgICAgICAgICA8cD4ke3QoJ3ByaW50LmludHJvJyl9PC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2gtcHIta3BpcyI+CiAgICAgICAgICAgICAgICA8ZGl2PjxiPiR7c2VydmljZXMubGVuZ3RofTwvYj48c3Bhbj4ke3QoJ3ByaW50LmtwaVJlcXVpcmVtZW50cycsIHsgbjogc2VydmljZXMubGVuZ3RoIH0pfTwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+PGI+JHtpbmNsdWRlZC5sZW5ndGh9PC9iPjxzcGFuPiR7dCgncHJpbnQua3BpUGxhdGZvcm1zJywgeyBuOiBpbmNsdWRlZC5sZW5ndGggfSl9PC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj48Yj4ke2Zsb3dzLmxlbmd0aH08L2I+PHNwYW4+JHt0KCdwcmludC5rcGlGbG93cycsIHsgbjogZmxvd3MubGVuZ3RoIH0pfTwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+PGI+JHtjb21wbGlhbmNlLmxlbmd0aH08L2I+PHNwYW4+JHt0KCdwcmludC5rcGlDb21wbGlhbmNlJywgeyBuOiBjb21wbGlhbmNlLmxlbmd0aCB9KX08L3NwYW4+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2gtcHItbGFiZWwgYWNoLXByLWxhYmVsLS1jb21wIj4ke3QoJ3ByaW50LmNvbXBsaWFuY2VMYWJlbCcpfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2gtcHItY29tcCI+JHtjb21wbGlhbmNlLm1hcChjID0+IGA8c3Bhbj4ke2VzY2FwZUh0bWwoYyl9PC9zcGFuPmApLmpvaW4oJycpfTwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFjaC1wci1zZWN0aW9uIj4KICAgICAgICAgICAgPGgyIGNsYXNzPSJhY2gtcHItaDIiPjxzcGFuIGNsYXNzPSJhY2gtcHItbnVtIj4xPC9zcGFuPiR7dCgncHJpbnQucmVxVGl0bGUnKX08L2gyPgogICAgICAgICAgICA8cCBjbGFzcz0iYWNoLXByLWxlYWQiPiR7dCgncHJpbnQucmVxTGVhZCcpfTwvcD4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhY2gtcHItdGFibGUiPgogICAgICAgICAgICAgICAgPHRoZWFkPjx0cj48dGg+JHt0KCdwcmludC5jb2xSZXF1aXJlbWVudCcpfTwvdGg+PHRoPiR7dCgncHJpbnQuY29sQnJpZWYnKX08L3RoPjx0aD4ke3QoJ3ByaW50LmNvbE1hbmFnZWRCeScpfTwvdGg+PC90cj48L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5PiR7cmVxUm93c308L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFjaC1wci1zZWN0aW9uIj4KICAgICAgICAgICAgJHtUSUVSX09SREVSLmZpbHRlcih0aWVyID0+IHRpZXIgIT09ICdvcHRpb25hbCcgJiYgYnlUaWVyKHRpZXIpLmxlbmd0aCkubWFwKCh0aWVyLCBpKSA9PiBwZm1Hcm91cCh0aWVyLCBpID09PSAwID8gcGZtSW50cm8gOiAnJykpLmpvaW4oJycpfQogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFjaC1wci1zZWN0aW9uIGFjaC1wci1rZWVwIj4KICAgICAgICAgICAgPGgyIGNsYXNzPSJhY2gtcHItaDIiPjxzcGFuIGNsYXNzPSJhY2gtcHItbnVtIj4zPC9zcGFuPiR7dCgncHJpbnQuZmxvd3NUaXRsZScpfTwvaDI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJhY2gtcHItbGVhZCI+JHt0KCdzdGVwMy5mbG93c0xlYWQnKX08L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjaC1wci1mbG93cyI+JHtmbG93c0h0bWx9PC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYWNoLXByLW5leHQiPgogICAgICAgICAgICA8c3Ryb25nPiR7dCgncHJpbnQubmV4dFRpdGxlJyl9PC9zdHJvbmc+CiAgICAgICAgICAgICR7dCgncHJpbnQubmV4dFRleHQnKX0gPGVtIGNsYXNzPSJhY2gtcHItbm90ZSI+JHt0KCdwcmludC5kaXNjbGFpbWVyJyl9PC9lbT4KICAgICAgICAgICAgJHtzaGFyZVVybCA\/IGA8c3BhbiBjbGFzcz0iYWNoLXByLWxpbmsiPiR7dCgncHJpbnQucmVvcGVuJywgeyB1cmw6IGVzY2FwZUh0bWwoc2hhcmVVcmwpIH0pfTwvc3Bhbj5gIDogJyd9CiAgICAgICAgPC9zZWN0aW9uPgogICAgYDsKfQoKLyogPT09PT09PT09PT09IENPUElBIFNDSEVEQSA9PT09PT09PT09PT0gKi8KZnVuY3Rpb24gYnVpbGRTdW1tYXJ5VGV4dCgpIHsKICAgIGNvbnN0IHsgc2VydmljZXMsIHJhbmtlZCwgY29tcGxpYW5jZSB9ID0gY29tcHV0ZVN0YWNrKCk7CiAgICBjb25zdCBpbmNsdWRlZCA9IGluY2x1ZGVkUGxhdGZvcm1zKHJhbmtlZCk7CiAgICBjb25zdCBsaW5lcyA9IFsKICAgICAgICBgIyAke3QoJ3RleHQudGl0bGUnKX1gLAogICAgICAgIGAke3QoJ3RleHQucHJvZmlsZScpfTogJHtwcm9maWxlVGl0bGVXaXRoU3ViKCl9YCwKICAgICAgICBgJHt0KCd0ZXh0LmRhdGUnKX06ICR7bmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoTEFORyA9PT0gJ2VuJyA\/ICdlbi1HQicgOiAnaXQtSVQnKX1gLAogICAgICAgICcnLAogICAgICAgIGAjIyAke3QoJ3RleHQucmVxdWlyZW1lbnRzJyl9ICgke3NlcnZpY2VzLmxlbmd0aH0pYCwKICAgICAgICAuLi5zZXJ2aWNlcy5tYXAocyA9PiBgLSAke0wocy5sYWJlbE5vcm1hbCl9ICgke0wocy5sYWJlbFRlY2gpfSlgKSwKICAgICAgICAnJywKICAgICAgICBgIyMgJHt0KCd0ZXh0LnBsYXRmb3JtcycpfSAoJHtpbmNsdWRlZC5sZW5ndGh9KWAKICAgIF07CiAgICBpbmNsdWRlZC5mb3JFYWNoKHAgPT4gewogICAgICAgIGNvbnN0IHBmbSA9IFBMQVRGT1JNU19EQVRBW3AuaWRdOwogICAgICAgIGxpbmVzLnB1c2goYC0gJHtwZm0ubmFtZX0gWyR7dGllclRleHQocC50aWVyLCAnbGFiZWwnKS50b1VwcGVyQ2FzZSgpfV0gwrcgJHtMKHBmbS5yb2xlKX06ICR7TChwZm0ubmFycmF0aXZlKX1gKTsKICAgICAgICBwLml0ZW1zLm1hcChpaWQgPT4gSVRFTVNfREFUQS5maW5kKHggPT4geC5pZCA9PT0gaWlkKSkuZmlsdGVyKEJvb2xlYW4pCiAgICAgICAgICAgIC5mb3JFYWNoKHMgPT4gbGluZXMucHVzaChgICAtICR7TChzLmxhYmVsTm9ybWFsKX0gKCR7dCgocy5wcmltYXJ5IHx8IFtdKS5pbmNsdWRlcyhwLmlkKSA\/ICd3aG8ubGVhZCcgOiAnd2hvLnN1cHBvcnQnKX0pOiAke0wocy5yb2xlc1twLmlkXSl9YCkpOwogICAgfSk7CiAgICBsaW5lcy5wdXNoKCcnLCBgIyMgJHt0KCd0ZXh0LmNvbXBsaWFuY2UnKX1gLCBjb21wbGlhbmNlLmpvaW4oJywgJyksICcnLCB0KCd0ZXh0LmZvb3RlcicpKTsKICAgIHJldHVybiBsaW5lcy5qb2luKCdcbicpICsgJ1xuJzsKfQoKZnVuY3Rpb24gY29weVN1bW1hcnkoKSB7CiAgICBjb25zdCB0ZXh0ID0gYnVpbGRTdW1tYXJ5VGV4dCgpOwogICAgY29uc3QgZG9uZSA9ICgpID0+IHNob3dUb2FzdCh0KCd0b2FzdC5jb3BpZWQnKSk7CiAgICBjb25zdCBmYWxsYmFjayA9ICgpID0+IHsKICAgICAgICBjb25zdCB0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CiAgICAgICAgdGEudmFsdWUgPSB0ZXh0OwogICAgICAgIHRhLnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCAnJyk7CiAgICAgICAgdGEuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnOwogICAgICAgIHRhLnN0eWxlLm9wYWNpdHkgPSAnMCc7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YSk7CiAgICAgICAgdGEuc2VsZWN0KCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsKICAgICAgICAgICAgZG9uZSgpOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgc2hvd1RvYXN0KHQoJ3RvYXN0LmNvcHlGYWlsZWQnKSwgJ3dhcm4nKTsKICAgICAgICB9CiAgICAgICAgdGEucmVtb3ZlKCk7CiAgICB9OwogICAgaWYgKG5hdmlnYXRvci5jbGlwYm9hcmQgJiYgd2luZG93LmlzU2VjdXJlQ29udGV4dCkgewogICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpLnRoZW4oZG9uZSwgZmFsbGJhY2spOwogICAgfSBlbHNlIHsKICAgICAgICBmYWxsYmFjaygpOwogICAgfQp9CgovKiA9PT09PT09PT09PT0gVE9BU1QgPT09PT09PT09PT09ICovCmNvbnN0IFRPQVNUX0lDT05TID0gewogICAgc3VjY2VzczogeyBjbHM6ICdhY2gtaWNvIGFjaC1pY28tLWNoZWNrLWNpcmNsZScsIGNvbG9yOiAndmFyKC0tc2l0ZS1taW50KScgfSwKICAgIGluZm86IHsgY2xzOiAnYWNoLWljbyBhY2gtaWNvLS1pbmZvLWNpcmNsZScsIGNvbG9yOiAnIzhGQjBGRicgfSwKICAgIHdhcm46IHsgY2xzOiAnYWNoLWljbyBhY2gtaWNvLS1leGNsYW1hdGlvbi1jaXJjbGUnLCBjb2xvcjogJyNGRkM4NTcnIH0KfTsKbGV0IHRvYXN0VGltZXIgPSBudWxsOwoKZnVuY3Rpb24gc2hvd1RvYXN0KG1zZywgdHlwZSA9ICdzdWNjZXNzJykgewogICAgY29uc3QgdG9hc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd25Ub2FzdCcpOwogICAgY29uc3QgaWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2FzdEljb24nKTsKICAgIGNvbnN0IGNvbmYgPSBUT0FTVF9JQ09OU1t0eXBlXSB8fCBUT0FTVF9JQ09OUy5zdWNjZXNzOwogICAgaWNvbi5jbGFzc05hbWUgPSBjb25mLmNsczsKICAgIGljb24uc3R5bGUuY29sb3IgPSBjb25mLmNvbG9yOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvYXN0VGV4dCcpLnRleHRDb250ZW50ID0gbXNnOwogICAgdG9hc3QuY2xhc3NMaXN0LnJlbW92ZSgnaXMtdmlzaWJsZScpOwogICAgdm9pZCB0b2FzdC5vZmZzZXRXaWR0aDsgLyogcmlhdnZpYSBsJ2FuaW1hemlvbmUgKi8KICAgIHRvYXN0LmNsYXNzTGlzdC5hZGQoJ2lzLXZpc2libGUnKTsKICAgIGNsZWFyVGltZW91dCh0b2FzdFRpbWVyKTsKICAgIHRvYXN0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRvYXN0LmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXZpc2libGUnKSwgMzIwMCk7Cn0KCi8qID09PT09PT09PT09PSBGT1JNIENPTlRBVFRPIChhQ2hpcmFsIENvYmFsdCkgPT09PT09PT09PT09ICovCi8qIFVuIG1vZHVsbyBDb2JhbHQgcGVyIGxpbmd1YTogc2UgbWFuY2EgcXVlbGxvIGl0YWxpYW5vIHNpIHVzYSBsJ2luZ2xlc2UgKi8KY29uc3QgTkFWX1JPT1QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2U0LW5hdmlnYXRvcicpOwpjb25zdCBDT0JBTFRfRk9STVMgPSB7CiAgICBpdDogTkFWX1JPT1QgPyBOQVZfUk9PVC5kYXRhc2V0LmZvcm1JdCA6ICcnLAogICAgZW46IE5BVl9ST09UID8gTkFWX1JPT1QuZGF0YXNldC5mb3JtRW4gOiAnJwp9OwpmdW5jdGlvbiBjb2JhbHRGb3JtVXJsKCkgewogICAgcmV0dXJuIENPQkFMVF9GT1JNU1tMQU5HXSB8fCBDT0JBTFRfRk9STVMuZW4gfHwgQ09CQUxUX0ZPUk1TLml0IHx8ICcnOwp9CmZ1bmN0aW9uIGNvYmFsdFRva2VuKCkgewogICAgY29uc3QgbSA9IGNvYmFsdEZvcm1VcmwoKS5tYXRjaCgvXC9mXC8oW14vPyNdKykvKTsKICAgIHJldHVybiBtID8gbVsxXSA6ICcnOwp9CgovKiBJbCBDUk0gbW9zdHJhIG9nbmkgY2FtcG8gbmFzY29zdG8gImhpZGRlbl91dG0iIGNvbWUgdW5hIHJpZ2EgZSB0b2dsaWUgZ2xpIGEgY2FwbzoKICAgaWwgcmllcGlsb2dvIMOoIGRpdmlzbyBpbiB1biBjYW1wbyBwZXIgcGFyYW1ldHJvIFVUTSAodXRtX3NvdXJjZSByZXN0YSBhIENvYmFsdCBwZXIgaWwgY2FuYWxlKS4KICAgVGVzdGkgaW4gaXRhbGlhbm8sIHBlciBpbCB0ZWFtIGFDaGlyYWwuICovCmNvbnN0IENPQkFMVF9GSUVMRFMgPSB7CiAgICB1dG1fY2FtcGFpZ246ICgpID0+IHsKICAgICAgICBjb25zdCBwID0gZ2V0UHJvZmlsZSgpOwogICAgICAgIHJldHVybiBgTmF2aWdhdG9yIMK3ICR7cCA\/IHAubmFtZS5pdCA6ICdDb25maWd1cmF6aW9uZSBsaWJlcmEnfSDCtyAke0xBTkcudG9VcHBlckNhc2UoKX1gOwogICAgfSwKICAgIHV0bV9jb250ZW50OiAoKSA9PiBpbmNsdWRlZFBsYXRmb3Jtcyhjb21wdXRlU3RhY2soKS5yYW5rZWQpCiAgICAgICAgLm1hcChwbCA9PiBgJHtQTEFURk9STVNfREFUQVtwbC5pZF0ubmFtZX0gKCR7U1RSSU5HUy5pdFsndGllci4nICsgcGwudGllciArICcubGFiZWwnXX0pYCkuam9pbignOyAnKSwKICAgIHV0bV90ZXJtOiAoKSA9PiBjb21wdXRlU3RhY2soKS5zZXJ2aWNlcy5tYXAocyA9PiBzLmxhYmVsTm9ybWFsLml0KS5qb2luKCc7ICcpLAogICAgdXRtX21lZGl1bTogY29uZmlndXJhdGlvbkxpbmssCiAgICB1dG1fc291cmNlOiAoKSA9PiBMQU5ESU5HX1VUTS51dG1fc291cmNlIHx8ICcnLAogICAgZ2NsaWQ6ICgpID0+IExBTkRJTkdfVVRNLmdjbGlkIHx8ICcnLAogICAgZmJjbGlkOiAoKSA9PiBMQU5ESU5HX1VUTS5mYmNsaWQgfHwgJycsCiAgICBsaV9mYXRfaWQ6ICgpID0+IExBTkRJTkdfVVRNLmxpX2ZhdF9pZCB8fCAnJwp9OwoKZnVuY3Rpb24gY29iYWx0RnJhbWVVcmwoKSB7CiAgICBpZiAoIWNvYmFsdEZvcm1VcmwoKSkgcmV0dXJuICcnOwogICAgY29uc3QgdXJsID0gbmV3IFVSTChjb2JhbHRGb3JtVXJsKCksIHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKICAgIE9iamVjdC5lbnRyaWVzKENPQkFMVF9GSUVMRFMpLmZvckVhY2goKFtwYXJhbSwgdmFsdWVdKSA9PiB7CiAgICAgICAgY29uc3QgdiA9IHZhbHVlKCk7CiAgICAgICAgaWYgKHYpIHVybC5zZWFyY2hQYXJhbXMuc2V0KHBhcmFtLCB2KTsKICAgIH0pOwogICAgcmV0dXJuIHVybC5ocmVmOwp9CgovKiBBZ2dpb3JuYSBpbCBtb2R1bG8gc29sbyBzZSBsYSBjb25maWd1cmF6aW9uZSDDqCBjYW1iaWF0YSwgcGVyIG5vbiByaWNhcmljYXJsbyBhIHZ1b3RvICovCmZ1bmN0aW9uIHJlbmRlckNvYmFsdEZvcm0oKSB7CiAgICBjb25zdCBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2JhbHRGcmFtZScpOwogICAgY29uc3Qgc3JjID0gY29iYWx0RnJhbWVVcmwoKTsKICAgIGZyYW1lLmhpZGRlbiA9ICFzcmM7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29iYWx0TWlzc2luZycpLmhpZGRlbiA9ICEhc3JjOwogICAgaWYgKHNyYyAmJiBmcmFtZS5zcmMgIT09IHNyYykgewogICAgICAgIGZyYW1lLnN0eWxlLmhlaWdodCA9ICcnOwogICAgICAgIGZyYW1lLnNyYyA9IHNyYzsKICAgIH0KfQoKLyogSWwgbW9kdWxvIGNvbXVuaWNhIGxhIHN1YSBhbHRlenphOiBsJ2lmcmFtZSBzaSBhZGF0dGEgc2VuemEgYmFycmEgZGkgc2NvcnJpbWVudG8gKi8KZnVuY3Rpb24gYmluZENvYmFsdFJlc2l6ZSgpIHsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZSA9PiB7CiAgICAgICAgY29uc3QgZCA9IGUuZGF0YTsKICAgICAgICBpZiAoIWNvYmFsdEZvcm1VcmwoKSB8fCBlLm9yaWdpbiAhPT0gbmV3IFVSTChjb2JhbHRGb3JtVXJsKCksIHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5vcmlnaW4gfHwgIWQgfHwgZC50eXBlICE9PSAnYWNoaXJhbC1jdGEtaGVpZ2h0JyB8fCBkLnRva2VuICE9PSBjb2JhbHRUb2tlbigpKSByZXR1cm47CiAgICAgICAgLyogTCdhbHRlenphIHB1w7Igc29sbyBjcmVzY2VyZTogc2UgaWwgbW9kdWxvIHNpIGFjY29yY2lhIHBlciB1biBhdHRpbW8gbCdpZnJhbWUgbm9uIHNvYmJhbHphICovCiAgICAgICAgY29uc3QgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29iYWx0RnJhbWUnKTsKICAgICAgICBjb25zdCBoID0gTWF0aC5jZWlsKGQuaGVpZ2h0KSArIDI0OwogICAgICAgIGlmIChoID4gKHBhcnNlSW50KGZyYW1lLnN0eWxlLmhlaWdodCwgMTApIHx8IDApKSBmcmFtZS5zdHlsZS5oZWlnaHQgPSBoICsgJ3B4JzsKICAgIH0pOwp9CgovKiBJbCBQREYgdXNhIHBlc2kgZGkgUG9wcGlucyAoNjAwLzcwMCwgY29yc2l2bykgZSBpbCBsb2dvIGNoZSBsYSBwYWdpbmEgYSBzY2hlcm1vIHB1w7Igbm9uIGF2ZXIKICAgYW5jb3JhIHNjYXJpY2F0bzogc2VuemEgYXR0ZW5kZXJsaSBsJ2FudGVwcmltYSBkaSBzdGFtcGEgZXNjZSBjb24gdGVzdGkgdnVvdGkgbyBzZW56YSBsb2dvLgogICBTaSBjYXJpY2FubyBpbiBhbnRpY2lwbyBhbCBwYXNzbyA0IGUgc2kgYXR0ZW5kb25vIGFsIGNsaWMgKGFsIG1hc3NpbW8gNCBzZWNvbmRpKS4gKi8KY29uc3QgUFJJTlRfRk9OVFMgPSBbJzQwMCAxMHB0IFBvcHBpbnMnLCAnNTAwIDEwcHQgUG9wcGlucycsICc2MDAgMTBwdCBQb3BwaW5zJywgJzcwMCAxMHB0IFBvcHBpbnMnLCAnaXRhbGljIDQwMCAxMHB0IFBvcHBpbnMnXTsKbGV0IHByaW50QXNzZXRzUmVhZHkgPSBudWxsOwpmdW5jdGlvbiBsb2FkUHJpbnRBc3NldHMoKSB7CiAgICBpZiAoIXByaW50QXNzZXRzUmVhZHkpIHsKICAgICAgICBjb25zdCBmb250cyA9IGRvY3VtZW50LmZvbnRzID8gUFJJTlRfRk9OVFMubWFwKGYgPT4gZG9jdW1lbnQuZm9udHMubG9hZChmKS5jYXRjaCgoKSA9PiBudWxsKSkgOiBbXTsKICAgICAgICBjb25zdCBsb2dvID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgICBpbWcub25sb2FkID0gaW1nLm9uZXJyb3IgPSByZXNvbHZlOwogICAgICAgICAgICBpbWcuc3JjID0gTE9HT19VUkw7CiAgICAgICAgfSk7CiAgICAgICAgcHJpbnRBc3NldHNSZWFkeSA9IFByb21pc2UuYWxsKFsuLi5mb250cywgbG9nb10pOwogICAgfQogICAgcmV0dXJuIHByaW50QXNzZXRzUmVhZHk7Cn0KCmZ1bmN0aW9uIHByaW50UmVwb3J0KCkgewogICAgY29uc3QgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blByaW50UmVwb3J0Jyk7CiAgICBpZiAoYnRuLmdldEF0dHJpYnV0ZSgnYXJpYS1idXN5JykgPT09ICd0cnVlJykgcmV0dXJuOwogICAgcmVuZGVyUHJpbnRSZXBvcnQoKTsKICAgIGJ0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtYnVzeScsICd0cnVlJyk7CiAgICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDQwMDApKTsKICAgIGNvbnN0IGxvZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd25QcmludFJlcG9ydCAuYWNoLXByLWxvZ28nKTsKICAgIGNvbnN0IGxvZ29SZWFkeSA9ICFsb2dvIHx8IGxvZ28uY29tcGxldGUgPyBQcm9taXNlLnJlc29sdmUoKSA6IChsb2dvLmRlY29kZSA\/IGxvZ28uZGVjb2RlKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBQcm9taXNlLnJlc29sdmUoKSk7CiAgICBQcm9taXNlLnJhY2UoW1Byb21pc2UuYWxsKFtsb2FkUHJpbnRBc3NldHMoKSwgbG9nb1JlYWR5XSksIHRpbWVvdXRdKS50aGVuKCgpID0+IHsKICAgICAgICBidG4ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWJ1c3knKTsKICAgICAgICAvKiB1biBmcmFtZSBwZXIgYXBwbGljYXJlIGkgZm9udCBhcHBlbmEgYXJyaXZhdGkgcHJpbWEgZGkgYXByaXJlIGxhIHN0YW1wYSAqLwogICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHdpbmRvdy5wcmludCgpLCA1MCkpOwogICAgfSk7Cn0KCi8qID09PT09PT09PT09PSBJTklUSUFMSVpBVElPTiA9PT09PT09PT09PT0gKi8KZnVuY3Rpb24gYmluZEV2ZW50cygpIHsKICAgIC8vIFN0ZXBwZXIKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hY2gtc3RlcC1idG4nKS5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBnb1RvU3RlcChwYXJzZUludChpdGVtLmRhdGFzZXQuc3RlcCwgMTApKSk7CiAgICB9KTsKCiAgICAvLyBQYXNzbyAxCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFjcm9HcmlkJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHsKICAgICAgICBjb25zdCBjYXJkID0gZS50YXJnZXQuY2xvc2VzdCgnLmFjaC1tYWNyby1jYXJkJyk7CiAgICAgICAgaWYgKGNhcmQpIHNlbGVjdE1hY3JvKGNhcmQuZGF0YXNldC5pZCk7CiAgICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBsb3JlQmFubmVyJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZWxlY3RFeHBsb3JhdGlvbik7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuU3RlcDFOZXh0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBnb1RvU3RlcCgyKSk7CgogICAgLy8gUGFzc28gMgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlcnZpY2VzR3JpZCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7CiAgICAgICAgY29uc3QgYWN0aW9uRWwgPSBlLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1hY3Rpb25dJyk7CiAgICAgICAgaWYgKGFjdGlvbkVsKSB7CiAgICAgICAgICAgIGlmIChhY3Rpb25FbC5kYXRhc2V0LmFjdGlvbiA9PT0gJ3RvZ2dsZS1jb2xsYXBzZScpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGNhdCA9IGFjdGlvbkVsLmRhdGFzZXQuY2F0OwogICAgICAgICAgICAgICAgd2l6YXJkLmNvbGxhcHNlZENhdHMgPSB3aXphcmQuY29sbGFwc2VkQ2F0cy5pbmNsdWRlcyhjYXQpCiAgICAgICAgICAgICAgICAgICAgPyB3aXphcmQuY29sbGFwc2VkQ2F0cy5maWx0ZXIoYyA9PiBjICE9PSBjYXQpCiAgICAgICAgICAgICAgICAgICAgOiBbLi4ud2l6YXJkLmNvbGxhcHNlZENhdHMsIGNhdF07CiAgICAgICAgICAgICAgICByZW5kZXJTZXJ2aWNlc0dyaWQoKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFjdGlvbj0idG9nZ2xlLWNvbGxhcHNlIl1bZGF0YS1jYXQ9IiR7Y2F0fSJdYCkuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhY3Rpb25FbC5kYXRhc2V0LmFjdGlvbiA9PT0gJ3Jlc2V0LWZpbHRlcnMnKSB7CiAgICAgICAgICAgICAgICB3aXphcmQuZmlsdGVyQ2F0ID0gJ2FsbCc7CiAgICAgICAgICAgICAgICByZW5kZXJGaWx0ZXJUYWdzKCk7CiAgICAgICAgICAgICAgICBzZXRTZWFyY2goJycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2FyZCA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5hY2gtc3J2LWNhcmQnKTsKICAgICAgICBpZiAoY2FyZCkgdG9nZ2xlU2VydmljZShjYXJkLmRhdGFzZXQuaWQpOwogICAgfSk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbHRlclRhZ3MnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gewogICAgICAgIGNvbnN0IGIgPSBlLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1maWx0ZXJdJyk7CiAgICAgICAgaWYgKCFiKSByZXR1cm47CiAgICAgICAgd2l6YXJkLmZpbHRlckNhdCA9IGIuZGF0YXNldC52YWw7CiAgICAgICAgcmVuZGVyRmlsdGVyVGFncygpOwogICAgICAgIHJlbmRlclNlcnZpY2VzR3JpZCgpOwogICAgfSk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY0hpbnQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFkZFJlY29tbWVuZGVkKTsKCiAgICBjb25zdCBzZWFyY2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VydmljZVNlYXJjaCcpOwogICAgc2VhcmNoLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZSA9PiBzZXRTZWFyY2goZS50YXJnZXQudmFsdWUpKTsKICAgIHNlYXJjaC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZSA9PiB7CiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiBzZWFyY2gudmFsdWUpIHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBzZXRTZWFyY2goJycpOwogICAgICAgIH0KICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blNlYXJjaENsZWFyJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICAgICAgc2V0U2VhcmNoKCcnKTsKICAgICAgICBzZWFyY2guZm9jdXMoKTsKICAgIH0pOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5DbGVhckFsbFNydicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgICAgIGlmICghd2l6YXJkLnNlbGVjdGVkU2VydmljZXMubGVuZ3RoKSByZXR1cm47CiAgICAgICAgd2l6YXJkLnNlbGVjdGVkU2VydmljZXMgPSBbXTsKICAgICAgICByZWZyZXNoU3RlcDIoKTsKICAgICAgICBzaG93VG9hc3QodCgndG9hc3QuY2xlYXJlZCcpLCAnaW5mbycpOwogICAgfSk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blN0ZXAyUHJldicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gZ29Ub1N0ZXAoMSkpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blN0ZXAyTmV4dCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gZ29Ub1N0ZXAoMykpOwoKICAgIC8vIFBhc3NvIDMKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5TdGVwM1ByZXYnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGdvVG9TdGVwKDIpKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbGF0Zm9ybXNSZXN1bHRzQ29udGFpbmVyJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHsKICAgICAgICBjb25zdCB0b2dnbGUgPSBlLnRhcmdldC5jbG9zZXN0KCcjYnRuVG9nZ2xlT3B0aW9uYWwnKTsKICAgICAgICBjb25zdCBhZGQgPSBlLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1hZGQtcGZtXScpOwogICAgICAgIGNvbnN0IHJlbW92ZSA9IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXJlbW92ZS1wZm1dJyk7CiAgICAgICAgaWYgKHRvZ2dsZSkgewogICAgICAgICAgICB3aXphcmQuc2hvd09wdGlvbmFsID0gIXdpemFyZC5zaG93T3B0aW9uYWw7CiAgICAgICAgfSBlbHNlIGlmIChhZGQpIHsKICAgICAgICAgICAgd2l6YXJkLmFkZGVkUGxhdGZvcm1zLnB1c2goYWRkLmRhdGFzZXQuYWRkUGZtKTsKICAgICAgICAgICAgc2hvd1RvYXN0KHQoJ3RvYXN0LnBsYXRmb3JtQWRkZWQnLCB7IG5hbWU6IFBMQVRGT1JNU19EQVRBW2FkZC5kYXRhc2V0LmFkZFBmbV0ubmFtZSB9KSk7CiAgICAgICAgfSBlbHNlIGlmIChyZW1vdmUpIHsKICAgICAgICAgICAgd2l6YXJkLmFkZGVkUGxhdGZvcm1zID0gd2l6YXJkLmFkZGVkUGxhdGZvcm1zLmZpbHRlcihwaWQgPT4gcGlkICE9PSByZW1vdmUuZGF0YXNldC5yZW1vdmVQZm0pOwogICAgICAgIH0gZWxzZSByZXR1cm47CiAgICAgICAgcmVuZGVyU3RlcDNSZXN1bHRzKCk7CiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2VkKCk7CiAgICAgICAgaWYgKHRvZ2dsZSkgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blRvZ2dsZU9wdGlvbmFsJykuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pOwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuU3RlcDNOZXh0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBnb1RvU3RlcCg0KSk7CgogICAgLy8gUGFzc28gNAogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blN0ZXA0UHJldicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gZ29Ub1N0ZXAoMykpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkVkaXRTZXJ2aWNlcycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gZ29Ub1N0ZXAoMikpOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3N0ZXBWaWV3NCAuYWNoLXNwZWMtc2hlZXQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gewogICAgICAgIGNvbnN0IGJ0biA9IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWFjdGlvbj0idG9nZ2xlLWNoaXBzIl0nKTsKICAgICAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgICAgIGNvbnN0IGlkID0gYnRuLmRhdGFzZXQubGlzdDsKICAgICAgICB3aXphcmQuZXhwYW5kZWRDaGlwcyA9IHdpemFyZC5leHBhbmRlZENoaXBzLmluY2x1ZGVzKGlkKQogICAgICAgICAgICA\/IHdpemFyZC5leHBhbmRlZENoaXBzLmZpbHRlcih4ID0+IHggIT09IGlkKQogICAgICAgICAgICA6IFsuLi53aXphcmQuZXhwYW5kZWRDaGlwcywgaWRdOwogICAgICAgIHJlbmRlclN0ZXA0U3VtbWFyeSgpOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFjdGlvbj0idG9nZ2xlLWNoaXBzIl1bZGF0YS1saXN0PSIke2lkfSJdYCkuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pOwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuQ29weVJlcG9ydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY29weVN1bW1hcnkpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blByaW50UmVwb3J0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBwcmludFJlcG9ydCk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JlcHJpbnQnLCByZW5kZXJQcmludFJlcG9ydCk7CgogICAgYmluZENvYmFsdFJlc2l6ZSgpOwp9CgovKiBSaXByaXN0aW5hIGxvIHN0YXRvIGRhaSBwYXJhbWV0cmkgVVJMICg\/c3RlcD0mbWFjcm89fG1vZGU9YWxsJnJlcT1pZDEsaWQyJnBmbT3igKYpICovCmZ1bmN0aW9uIHJlc3RvcmVGcm9tVXJsKCkgewogICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKICAgIGNvbnN0IHN0ZXAgPSBwYXJzZUludChwYXJhbXMuZ2V0KCdzdGVwJyksIDEwKSB8fCAxOwoKICAgIGlmIChwYXJhbXMuZ2V0KCdtb2RlJykgPT09ICdhbGwnKSB7CiAgICAgICAgd2l6YXJkLmlzRXhwbG9yYXRpb25Nb2RlID0gdHJ1ZTsKICAgICAgICBpZiAoIXBhcmFtcy5oYXMoJ3JlcScpICYmIHN0ZXAgPiAxKSB3aXphcmQuc2VsZWN0ZWRTZXJ2aWNlcyA9IElURU1TX0RBVEEubWFwKHMgPT4gcy5pZCk7CiAgICB9IGVsc2UgewogICAgICAgIGNvbnN0IG0gPSBNQUNST19FTlRJVElFUy5maW5kKHggPT4geC5pZCA9PT0gcGFyYW1zLmdldCgnbWFjcm8nKSkgfHwgKHN0ZXAgPiAxID8gTUFDUk9fRU5USVRJRVNbMF0gOiBudWxsKTsKICAgICAgICBpZiAobSkgewogICAgICAgICAgICB3aXphcmQuc2VsZWN0ZWRNYWNyb0lkID0gbS5pZDsKICAgICAgICAgICAgd2l6YXJkLnNlbGVjdGVkU2VydmljZXMgPSBnZXRQcm9maWxlRGVmYXVsdHMobSk7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChwYXJhbXMuaGFzKCdyZXEnKSAmJiBoYXNQcm9maWxlKCkpIHsKICAgICAgICBjb25zdCB2YWxpZCA9IHBhcmFtcy5nZXQoJ3JlcScpLnNwbGl0KCcsJykuZmlsdGVyKGlkID0+IElURU1TX0RBVEEuc29tZShzID0+IHMuaWQgPT09IGlkKSk7CiAgICAgICAgd2l6YXJkLnNlbGVjdGVkU2VydmljZXMgPSBbLi4ubmV3IFNldCh2YWxpZCldOwogICAgfQogICAgaWYgKHBhcmFtcy5oYXMoJ3BmbScpKSB7CiAgICAgICAgd2l6YXJkLmFkZGVkUGxhdGZvcm1zID0gcGFyYW1zLmdldCgncGZtJykuc3BsaXQoJywnKS5maWx0ZXIocGlkID0+IFBMQVRGT1JNU19EQVRBW3BpZF0pOwogICAgfQoKICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChzdGVwLCAxKSwgbWF4UmVhY2hhYmxlU3RlcCgpKTsKfQoKZnVuY3Rpb24gaW5pdEFwcCgpIHsKICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2U0LW5hdmlnYXRvcicpOwogICAgcm9vdC5sYW5nID0gTEFORzsKICAgIHRyYW5zbGF0ZVN0YXRpY1RleHQocm9vdCk7CiAgICBmaXRGdWxsV2lkdGgocm9vdCk7CiAgICBiaW5kRXZlbnRzKCk7CiAgICBnb1RvU3RlcChyZXN0b3JlRnJvbVVybCgpLCB7IGluaXRpYWw6IHRydWUgfSk7CiAgICBvcGVuUHJpbnRGcm9tVXJsKCk7Cn0KCi8qIElsIGNvbnRlbml0b3JlIGRlbGxhIHBhZ2luYSBXb3JkUHJlc3MgaGEgdW4gcGFkZGluZzogaWwgY29uZmlndXJhdG9yZSBzaSBhbGxhcmdhCiAgIGFsbGEgZmluZXN0cmEgKGNsaWVudFdpZHRoIGVzY2x1ZGUgbGEgc2Nyb2xsYmFyLCAxMDB2dyBubyBlIGZhcmViYmUgc2NvcnJlcmUgaW4gb3JpenpvbnRhbGUpICovCmZ1bmN0aW9uIGZpdEZ1bGxXaWR0aChyb290KSB7CiAgICBjb25zdCBmaXQgPSAoKSA9PiByb290LnN0eWxlLnNldFByb3BlcnR5KCctLWFjaC12dycsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCArICdweCcpOwogICAgZml0KCk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZml0KTsKfQoKLyogP3ByaW50PTEgKGxpbmsgZGVsIGxlYWQgaW4gQ29iYWx0KTogYXByZSBzdWJpdG8gbGEgc2NoZWRhIFBERiBkZWxsYSBjb25maWd1cmF6aW9uZS4KICAgTGEgc2NoZWRhIMOoIGdpw6AgcHJvbnRhIG5lbGxhIHBhZ2luYSBhbmNoZSBwZXIgY2hpIGdlbmVyYSBpbCBQREYgc2VuemEgZmluZXN0cmEgZGkgc3RhbXBhCiAgIChicm93c2VyIGhlYWRsZXNzIGxhdG8gc2VydmVyKS4gSWwgcGFyYW1ldHJvIHNpIHRvZ2xpZSBwZXIgbm9uIHJpc3RhbXBhcmUgYSBvZ25pIHJpY2FyaWNhLiAqLwpmdW5jdGlvbiBvcGVuUHJpbnRGcm9tVXJsKCkgewogICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKICAgIGlmIChwYXJhbXMuZ2V0KCdwcmludCcpICE9PSAnMScpIHJldHVybjsKICAgIHBhcmFtcy5kZWxldGUoJ3ByaW50Jyk7CiAgICBjb25zdCBxcyA9IHBhcmFtcy50b1N0cmluZygpOwogICAgdHJ5IHsgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIChxcyA\/ICc\/JyArIHFzIDogJycpICsgd2luZG93LmxvY2F0aW9uLmhhc2gpOyB9IGNhdGNoIChlKSB7IC8qIHNhbmRib3ggKi8gfQogICAgaWYgKHdpemFyZC5jdXJyZW50U3RlcCAhPT0gNCkgcmV0dXJuOwogICAgcmVuZGVyUHJpbnRSZXBvcnQoKTsKICAgIGNvbnN0IGdvID0gKCkgPT4gc2V0VGltZW91dChwcmludFJlcG9ydCwgMzAwKTsKICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSBnbygpOwogICAgZWxzZSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGdvLCB7IG9uY2U6IHRydWUgfSk7Cn0KCi8qIE5laSB0ZXN0IChOb2RlKSBub24gYyfDqCBsYSBwYWdpbmE6IHNpIGNhcmljYW5vIHNvbG8gZGF0aSBlIGxvZ2ljYSAqLwppZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykgaW5pdEFwcCgpOwp9KSgpOwo=\"><\/script>","protected":false},"excerpt":{"rendered":"<p>01 02 03 04<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-91","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>We4CR | Clinical Trial Insights &amp; CRO Industry News<\/title>\n<meta name=\"description\" content=\"Expert insights on clinical trials and CRO industry trends. We4CR covers biotech, med-tech, and innovative research methodologies.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/we4healthcare.com\/it\/services-navigator\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"We4CR | Clinical Trial Insights &amp; CRO Industry News\" \/>\n<meta property=\"og:description\" content=\"Expert insights on clinical trials and CRO industry trends. We4CR covers biotech, med-tech, and innovative research methodologies.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/we4healthcare.com\/it\/services-navigator\/\" \/>\n<meta property=\"og:site_name\" content=\"We4 Healthcare\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-27T16:10:02+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/services-navigator\\\/\",\"url\":\"https:\\\/\\\/we4healthcare.com\\\/services-navigator\\\/\",\"name\":\"We4CR | Clinical Trial Insights & CRO Industry News\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/#website\"},\"datePublished\":\"2025-08-07T10:19:11+00:00\",\"dateModified\":\"2026-10-27T16:10:02+00:00\",\"description\":\"Expert insights on clinical trials and CRO industry trends. We4CR covers biotech, med-tech, and innovative research methodologies.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/services-navigator\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/we4healthcare.com\\\/services-navigator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/services-navigator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/we4healthcare.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Navigator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/#website\",\"url\":\"https:\\\/\\\/we4healthcare.com\\\/\",\"name\":\"We4 Healthcare\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/we4healthcare.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/#organization\",\"name\":\"We4 Healthcare\",\"url\":\"https:\\\/\\\/we4healthcare.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/we4healthcare.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/logowe4Healthcare@3x.png\",\"contentUrl\":\"https:\\\/\\\/we4healthcare.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/logowe4Healthcare@3x.png\",\"width\":2400,\"height\":572,\"caption\":\"We4 Healthcare\"},\"image\":{\"@id\":\"https:\\\/\\\/we4healthcare.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"We4CR | Clinical Trial Insights & CRO Industry News","description":"Expert insights on clinical trials and CRO industry trends. We4CR covers biotech, med-tech, and innovative research methodologies.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/we4healthcare.com\/it\/services-navigator\/","og_locale":"it_IT","og_type":"article","og_title":"We4CR | Clinical Trial Insights & CRO Industry News","og_description":"Expert insights on clinical trials and CRO industry trends. We4CR covers biotech, med-tech, and innovative research methodologies.","og_url":"https:\/\/we4healthcare.com\/it\/services-navigator\/","og_site_name":"We4 Healthcare","article_modified_time":"2026-10-27T16:10:02+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tempo di lettura stimato":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/we4healthcare.com\/services-navigator\/","url":"https:\/\/we4healthcare.com\/services-navigator\/","name":"We4CR | Clinical Trial Insights & CRO Industry News","isPartOf":{"@id":"https:\/\/we4healthcare.com\/#website"},"datePublished":"2025-08-07T10:19:11+00:00","dateModified":"2026-10-27T16:10:02+00:00","description":"Expert insights on clinical trials and CRO industry trends. We4CR covers biotech, med-tech, and innovative research methodologies.","breadcrumb":{"@id":"https:\/\/we4healthcare.com\/services-navigator\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/we4healthcare.com\/services-navigator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/we4healthcare.com\/services-navigator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/we4healthcare.com\/"},{"@type":"ListItem","position":2,"name":"Navigator"}]},{"@type":"WebSite","@id":"https:\/\/we4healthcare.com\/#website","url":"https:\/\/we4healthcare.com\/","name":"We4 Healthcare","description":"","publisher":{"@id":"https:\/\/we4healthcare.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/we4healthcare.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/we4healthcare.com\/#organization","name":"We4 Healthcare","url":"https:\/\/we4healthcare.com\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/we4healthcare.com\/#\/schema\/logo\/image\/","url":"https:\/\/we4healthcare.com\/wp-content\/uploads\/2025\/12\/logowe4Healthcare@3x.png","contentUrl":"https:\/\/we4healthcare.com\/wp-content\/uploads\/2025\/12\/logowe4Healthcare@3x.png","width":2400,"height":572,"caption":"We4 Healthcare"},"image":{"@id":"https:\/\/we4healthcare.com\/#\/schema\/logo\/image\/"}}]}},"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"We4 Healthcare","distributor_original_site_url":"https:\/\/we4healthcare.com\/it","push-errors":false,"_links":{"self":[{"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/pages\/91","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/comments?post=91"}],"version-history":[{"count":15,"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/pages\/91\/revisions"}],"predecessor-version":[{"id":5101,"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/pages\/91\/revisions\/5101"}],"wp:attachment":[{"href":"https:\/\/we4healthcare.com\/it\/wp-json\/wp\/v2\/media?parent=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}