PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+RXZlbnQgTGFuZGluZyBQYWdlPC90aXRsZT4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5FdmVudCBMYW5kaW5nIFBhZ2U8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkhSICYgSm9iIEJvYXJkIOKAlCBGaW5kIGpvYnMsIHBvc3Qgb3BlbmluZ3MsIGFuZCBjb25uZWN0IHRhbGVudCB3aXRoIGVtcGxveWVycy4gQnJvd3NlIGNhdGVnb3JpZXMsIGNvbXBhbnkgcHJvZmlsZXMsIGFuZCBjYXJlZXIgcmVzb3VyY2VzLiIgLz4KICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJqb2JzLCBjYXJlZXJzLCBoaXJpbmcsIGVtcGxveWVycywgcmVjcnVpdG1lbnQsIHRhbGVudCwgSFIsIGpvYiBib2FyZCIgLz4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iSFIgJiBKb2IgQm9hcmQiIC8+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3csIG1heC1zbmlwcGV0Oi0xLCBtYXgtaW1hZ2UtcHJldmlldzpsYXJnZSwgbWF4LXZpZGVvLXByZXZpZXc6LTEiIC8+CiAgPG1ldGEgbmFtZT0ibGFuZ3VhZ2UiIGNvbnRlbnQ9IkVuZ2xpc2giIC8+CiAgPG1ldGEgbmFtZT0iZGlzdHJpYnV0aW9uIiBjb250ZW50PSJnbG9iYWwiIC8+CiAgPG1ldGEgbmFtZT0icmF0aW5nIiBjb250ZW50PSJHZW5lcmFsIiAvPgogIDxtZXRhIG5hbWU9InJldmlzaXQtYWZ0ZXIiIGNvbnRlbnQ9IjcgZGF5cyIgLz4KICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iI2ZmZmZmZiIgLz4KICAgIDxtZXRhIG5hbWU9ImFwcGxpY2F0aW9uLW5hbWUiIGNvbnRlbnQ9IkhSICYgSm9iIEJvYXJkIiAvPgoKICA8IS0tIENhbm9uaWNhbCAtLT4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2V4YW1wbGUuY29tL3RlY2gtc3VtbWl0LTIwMjYvIiAvPgoKICA8IS0tIEZhdmljb25zIC0tPgogIDxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iL2Zhdmljb24uaWNvIiAvPgogIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii9hcHBsZS10b3VjaC1pY29uLnBuZyIgLz4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjMyeDMyIiBocmVmPSIvZmF2aWNvbi0zMngzMi5wbmciIC8+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIxNngxNiIgaHJlZj0iL2Zhdmljb24tMTZ4MTYucG5nIiAvPgoKICAgIDwhLS0gT3BlbiBHcmFwaCAvIEZhY2Vib29rIC0tPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9IndlYnNpdGUiIC8+CiAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9leGFtcGxlLmNvbS9oci1qb2ItYm9hcmQvIiAvPgogICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iSFIgJiBKb2IgQm9hcmQg4oCUIEZpbmQgSm9icyAmIFRhbGVudCIgLz4KICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZpbmQgam9icywgcG9zdCBvcGVuaW5ncywgYW5kIGNvbm5lY3Qgd2l0aCBlbXBsb3llcnMgb24gdGhlIEhSICYgSm9iIEJvYXJkLiIgLz4KICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAzL2NvZGUtYXNzaXN0YW50LnBuZyIgLz4KICAgICAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkhSICYgSm9iIEJvYXJkIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmxvY2FsZSIgY29udGVudD0iZW5fVVMiIC8+CgogICAgPCEtLSBUd2l0dGVyIENhcmRzIC0tPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIiAvPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dXJsIiBjb250ZW50PSJodHRwczovL2V4YW1wbGUuY29tL2hyLWpvYi1ib2FyZC8iIC8+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iSFIgJiBKb2IgQm9hcmQg4oCUIEZpbmQgSm9icyAmIFRhbGVudCIgLz4KICAgICAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGaW5kIGpvYnMsIHBvc3Qgb3BlbmluZ3MsIGFuZCBjb25uZWN0IHdpdGggZW1wbG95ZXJzIG9uIHRoZSBIUiAmIEpvYiBCb2FyZC4iIC8+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZSIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDMvY29kZS1hc3Npc3RhbnQucG5nIiAvPgogICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjpjcmVhdG9yIiBjb250ZW50PSJASFJKb2JCb2FyZCIgLz4KCiAgPCEtLSBJbnN0YWdyYW0gLS0+CiAgPG1ldGEgcHJvcGVydHk9Im9nOnNlZV9hbHNvIiBjb250ZW50PSJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3dyaXRlY3JlYW1haS8iIC8+CiAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOnNpdGUiIGNvbnRlbnQ9IkB3cml0ZWNyZWFtYWkiIC8+CiAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9jb2RlLWFzc2lzdGFudC5wbmciIC8+CgogIDwhLS0gQWRkaXRpb25hbCBTRU8gTWV0YSBUYWdzIC0tPgogIDxtZXRhIG5hbWU9Imdlby5yZWdpb24iIGNvbnRlbnQ9IlVTIiAvPgogIDxtZXRhIG5hbWU9Imdlby5wbGFjZW5hbWUiIGNvbnRlbnQ9Ik5ldyBZb3JrLCBVU0EiIC8+CiAgPG1ldGEgbmFtZT0iZ2VvLnBvc2l0aW9uIiBjb250ZW50PSI0MC43MTI4Oy03NC4wMDYwIiAvPgogIDxtZXRhIG5hbWU9IklDQk0iIGNvbnRlbnQ9IjQwLjcxMjgsIC03NC4wMDYwIiAvPgogIDxtZXRhIG5hbWU9Im1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyIgLz4KICA8bWV0YSBuYW1lPSJIYW5kaGVsZEZyaWVuZGx5IiBjb250ZW50PSJ0cnVlIiAvPgogIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KCiAgICA8IS0tIFNjaGVtYSBNYXJrdXAgKEpTT04tTEQpIC0tPgogICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KICAgIHsKICAgICAgICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAgICAgICAiQHR5cGUiOiAiV2ViU2l0ZSIsCiAgICAgICAgIm5hbWUiOiAiSFIgJiBKb2IgQm9hcmQiLAogICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9leGFtcGxlLmNvbS9oci1qb2ItYm9hcmQvIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiSFIgJiBKb2IgQm9hcmQg4oCUIGEgcGxhY2UgZm9yIGpvYiBzZWVrZXJzIGFuZCBlbXBsb3llcnMgdG8gY29ubmVjdCwgcG9zdCByb2xlcywgYW5kIGRpc2NvdmVyIHRhbGVudC4iLAogICAgICAgICJwdWJsaXNoZXIiOiB7CiAgICAgICAgICAgICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgICAgICAgICAibmFtZSI6ICJIUiAmIEpvYiBCb2FyZCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iCiAgICAgICAgfQogICAgfQogICAgPC9zY3JpcHQ+CgogIDwhLS0gRm9udHMgYW5kIENTUyAtLT4KICA8IS0tIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSIgLz4KICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIGNyb3Nzb3JpZ2luIC8+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1PdXRmaXQ6d2dodEA0MDA7NTAwOzYwMDs3MDAmZmFtaWx5PVNwYWNlK0dyb3Rlc2s6d2dodEA0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiIC8+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi4wLjAvY3NzL2FsbC5taW4uY3NzIiAvPiAtLT4KICAgIDxzY3JpcHQgdHlwZT0iaW1wb3J0bWFwIj4KICAgICAgewogICAgICAgICJpbXBvcnRzIjogewogICAgICAgICAgInJlYWN0IjogImh0dHBzOi8vZXNtLnNoL3JlYWN0QDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tIjogImh0dHBzOi8vZXNtLnNoL3JlYWN0LWRvbUAxOC4yLjAiLAogICAgICAgICAgInJlYWN0LWRvbS8iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMC8iLAogICAgICAgICAgIkBjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdCI6ICJodHRwczovL2VzbS5zaC9AY29kZXNhbmRib3gvc2FuZHBhY2stcmVhY3RAMi44LjA/ZGVwcz1yZWFjdEAxOC4yLjAmZGVwcz1yZWFjdC1kb21AMTguMi4wIgogICAgICAgIH0KICAgICAgfQogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9raXQuZm9udGF3ZXNvbWUuY29tL2JjMDgxNzkyZDQuanMiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PgogICAgCiAgICA8c3R5bGU+Cjpyb290IHsKICAgIC0tcHJpbWFyeS1jb2xvcjogIzJkMmQyZDsKICAgIC0tYWNjZW50LWNvbG9yOiAjNGE5MGUyOwogICAgLS1ibHVlLWNvbG9yOiAjNGE5MGUyOwogICAgCiAgICAvKiBEYXJrIHRoZW1lIGNvbG9ycyAoZGVmYXVsdCBhbmQgb25seSB0aGVtZSkgKi8KICAgIC0tYmctY29sb3I6ICMwMDAwMDA7CiAgICAtLXN1cmZhY2UtY29sb3I6ICMyZDJkMmQ7CiAgICAtLXRleHQtY29sb3I6ICNlMGUwZTA7CiAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDsKICAgIC0taW5wdXQtYmc6ICMyZDJkMmQ7CiAgICAtLWlucHV0LWJvcmRlcjogIzQwNDA0MDsKICAgIC0tcGlsbC1iZzogIzMzMzMzMzsKICAgIC0tYnV0dG9uLWJnOiAjNDA0MDQwOwogICAgLS1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgIC0taGVhZGVyLWJvcmRlcjogIzQwNDA0MDsKICAgIC0tZm9vdGVyLWJnOiAjMmQyZDJkOwogICAgLS1jYXJkLWJnOiAjMzMzMzMzOwogICAgLS1iZy1zZWNvbmRhcnk6ICM0NDQ0NDQ7CiAgICAtLXRleHQtc2Vjb25kYXJ5OiAjY2NjY2NjOwogICAgLS1ibHVlLWhvdmVyOiAjM2E3YmM4Owp9CgovKiBTY3JvbGxiYXIgd2lkdGggKi8KOjotd2Via2l0LXNjcm9sbGJhciB7CiAgd2lkdGg6IDEycHg7Cn0KCi8qIFRyYWNrIChiYWNrZ3JvdW5kKSAqLwo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kOiAjMWExYTFhOyAvKiBkYXJrIGJhY2tncm91bmQgKi8KfQoKLyogSGFuZGxlICh0aHVtYikgKi8KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgYmFja2dyb3VuZDogIzU1NTsgLyogZGFyayBncmF5ICovCiAgYm9yZGVyLXJhZGl1czogNnB4Owp9CgovKiBIYW5kbGUgb24gaG92ZXIgKi8KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgYmFja2dyb3VuZDogIzc3NzsKfQovKiBCYXNlIGNoYXQgYnViYmxlIHN0eWxlcyBmb3IgZGFyayB0aGVtZSAqLwouY2hhdC1idWJibGUuYWkgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7IC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLXN1cmZhY2UtY29sb3IgKi8KICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MDUwNTA7IC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLWJvcmRlci1jb2xvciAqLwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgouY2hhdC1idWJibGUuYWk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IC04cHg7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOyAvKiBNYXRjaGVzIHRoZSBidWJibGUgYmFja2dyb3VuZCAqLwogICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEwMCUgMCwgMCUgMTAwJSwgMTAwJSAxMDAlKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwp9CgouZ2l0aHViLXN0YXJzLAouZ2l0aHViLWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKfQoKLmJhZGdlLXRvZ2V0aGVyIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBvcGFjaXR5OiAwLjg7Cn0KCiogewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7Cn0KCi8qIFdvcmRQcmVzcyBUaGVtZSBDb21wYXRpYmlsaXR5IC0gRnVsbCBQYWdlIEJhY2tncm91bmQgKi8KYm9keSwgaHRtbCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIGNvbnRhaW5lciBhZGp1c3RtZW50cyAtIEZ1bGwgd2lkdGggKi8KLmNvbnRhaW5lciwgLmNvbnRhaW5lci1mbHVpZCwgLndyYXBwZXIsIC5jb250ZW50LCAubWFpbiwgCi5zaXRlLWNvbnRlbnQsIC5lbnRyeS1jb250ZW50LCAucGFnZS1jb250ZW50IHsKICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgb3VyIGNvbnRlbnQgd29ya3Mgd2l0aGluIFdvcmRQcmVzcyAqLwojbGFuZGluZ1NlY3Rpb24gewogICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgIGNvbG9yOiAjZTBlMGUwOwp9CgovKiBGaXggaGVybyBzZWN0aW9uIGNvbnRlbnQgY2VudGVyaW5nIC0ga2VlcCBjb250ZW50IGNlbnRlcmVkIGJ1dCBiYWNrZ3JvdW5kIGZ1bGwtd2lkdGggKi8KLmhlcm8tc2VjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5oZXJvLWNvbnRlbnQsIC5oZXJvLXRleHQgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDgwMHB4ICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEZpeCBzdGFyIGxvZ28gcG9zaXRpb25pbmcgLSBrZWVwIGl0IGNlbnRlcmVkICovCi5oZXJvLXNlY3Rpb24gaDEgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGdhcDogMTVweCAhaW1wb3J0YW50Owp9CgouaGVyby1zZWN0aW9uIHAgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50Owp9CgovKiBGaXggdGhlIGFjdHVhbCBpbnB1dCBjb250YWluZXIgY2xhc3NlcyBmcm9tIEhUTUwgKi8KLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKfQoKLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKfQoKLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgIWltcG9ydGFudDsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5pbnB1dC1jb250cm9scy1yb3cgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgIGdhcDogMTJweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogNnB4IDEwcHggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLyogRml4IHByb21wdCBpbnB1dCBzdHlsaW5nIHRvIG1hdGNoIG9yaWdpbmFsICovCi5wcm9tcHQtaW5wdXQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICByZXNpemU6IG5vbmUgIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDsKICAgIG1heC1oZWlnaHQ6IDIwMHB4ICFpbXBvcnRhbnQ7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgoKCi8qIEZpeCBzdWdnZXN0ZWQgYXBwcyBzZWN0aW9uIC0gY2VudGVyZWQgd2l0aCBwcm9wZXIgd2lkdGggKi8KLnN1Z2dlc3RlZC1hcHBzIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgIGdhcDogMTBweCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50Owp9Cgouc3VnZ2VzdGVkLWFwcCB7CiAgICBtYXJnaW46IDVweCAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKfQoKLyogRml4IGZlYXR1cmVzIGdyaWQgLSAzIGNhcmRzIGluIGEgcm93LCBjZW50ZXJlZCAqLwouZmVhdHVyZXMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAyODBweCkgIWltcG9ydGFudDsKICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5mZWF0dXJlLWNhcmQgewogICAgd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBhbGwgc2VjdGlvbnMgYXJlIHByb3Blcmx5IGNlbnRlcmVkICovCi5mZWF0dXJlcy1zZWN0aW9uLCAuaG93LWl0LXdvcmtzLXNlY3Rpb24sIC5wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCi5kZW1vLXNlY3Rpb24sIC5jYXBhYmlsaXRpZXMtc2VjdGlvbiwgLnRlc3RpbW9uaWFscy1zZWN0aW9uLCAuY3RhLXNlY3Rpb24gewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIHBhZ2Utc3BlY2lmaWMgc3R5bGluZyAtIEZ1bGwgYmFja2dyb3VuZCBjb3ZlcmFnZSAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLApib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAtNDBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogLTE1MHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1ib3R0b206IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTkwcHgpICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBjZW50ZXJpbmcgZm9yIEhvdyBJdCBXb3JrcyBzZWN0aW9uICovCmJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXNlY3Rpb24gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgY2VudGVyIG9ubHkgdGhlIHN1YnRpdGxlIHRleHQgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi8qIENlbnRlciBBTEwgc2VjdGlvbiBzdWJ0aXRsZXMgaW4gV29yZFByZXNzICovCmJvZHkucGFnZS1pZC01OTM2MyAuaGVyby1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAuZW5kbGVzcy1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5hY3Rpb24tc3VidGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5jdGEtc3VidGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgc2VjdGlvbiB0aXRsZXMgYXJlIGNlbnRlcmVkIGluIFdvcmRQcmVzcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFjdGlvbi10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5tb3JlLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmN0YS10aXRsZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgovKiBXb3JkUHJlc3Mtc3BlY2lmaWMgY2VudGVyaW5nIGZvciBhbGwgc2VjdGlvbnMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCmJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCmJvZHkucGFnZS1pZC01OTM2MyAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBXb3JkUHJlc3MgY29udGFpbmVycyBkb24ndCBhZGQgd2hpdGUgc3BhY2UgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLm1haW4sCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLmVudHJ5LWNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAucGFnZS1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgZXhjZXNzaXZlIFdvcmRQcmVzcyBvdmVycmlkZXMgLSBrZWVwIG1pbmltYWwgKi8KCi8qIFdvcmRQcmVzcyBjb250YWluZXIgY29tcGF0aWJpbGl0eSAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CgovKiBSZXNwb25zaXZlIERlc2lnbiBJbXByb3ZlbWVudHMgKi8KLyogRm9yIHNjcmVlbnMgOTAwcHggYW5kIGJlbG93IC0gU1RBQ0sgVkVSVElDQUxMWSAqLwpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5zdGVwcy1jb250YWluZXIgeyAKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IAogICAgICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7IAogICAgICAgIHBhZGRpbmc6IDAgMXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtYXJyb3cgeyAKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgIWltcG9ydGFudDsgCiAgICAgICAgZm9udC1zaXplOiAxLjJyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIC5zdGVwLWNhcmQgeyAKICAgICAgICBtYXgtd2lkdGg6IDkwJSAhaW1wb3J0YW50OyAKICAgICAgICB3aWR0aDogOTAlICFpbXBvcnRhbnQ7IAogICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDEuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIC5zdGVwLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgfQp9CgovKiBNb2JpbGUgcmVzcG9uc2l2ZSBmaXhlcyAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXggLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICBib2R5IHsKICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBzaWduaWZpY2FudGx5ICovCiAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAzMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGhlcm8gc2VjdGlvbiBpbXByb3ZlbWVudHMgKi8KICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDIwcHggMTVweCAhaW1wb3J0YW50OwogICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmluc2lkZS1oZXJvLXNlY3Rpb24gewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgd2lkdGg6IDIuNXJlbSAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEuOHJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgIHBhZGRpbmc6IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEVuc3VyZSBsYW5kaW5nU2VjdGlvbiBoYXMgcHJvcGVyIHBhZGRpbmcgb24gbW9iaWxlIHRvIHByZXZlbnQgZWxlbWVudHMgdG91Y2hpbmcgZWRnZXMgKi8KICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgI2xhbmRpbmdTZWN0aW9uIC5wb3dlcmVkLXBpbGwgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGlucHV0IHNlY3Rpb24gZml4ZXMgKi8KICAgIC5pbnB1dC1zZWN0aW9uIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDE1cHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDEwcHggNXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1jb250YWluZXIsIC5wcm9tcHQtaW5wdXQsIC5pbnB1dC1ncm91cCB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBoZXJvIGNvbnRlbnQgKi8KICAgIC5oZXJvLWNvbnRlbnQsIC5oZXJvLXRleHQgewogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgZmVhdHVyZXMgZ3JpZCAtIHNpbmdsZSBjb2x1bW4gKi8KICAgIC5mZWF0dXJlcy1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDM1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGlucHV0IGNvbnRhaW5lcnMgKi8KICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgc3VnZ2VzdGVkIGFwcHMgKi8KICAgIC5zdWdnZXN0ZWQtYXBwcyB7CiAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlLXNwZWNpZmljIGJhY2tncm91bmQgaGVpZ2h0IHJlZHVjdGlvbiAqLwogICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLXRvcDogLTIwcHggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nLXRvcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxNzBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogRnVydGhlciByZWR1Y3Rpb24gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAqLwogICAgQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTYwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCBoZXJvIHJlc3BvbnNpdmVuZXNzICovCiAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICBmb250LXNpemU6IDEuNnJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1zZWN0aW9uIHAgewogICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS4xICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiA4cHggMCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogOHB4IDAgIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICB3aWR0aDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDZweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiA4cHggYXV0byAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogVmVyeSBzbWFsbCBzY3JlZW5zIChiZWxvdyA0ODBweCkgKi8KICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewogICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubG9nby10ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5sb2dvLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnRvZ2dsZS12aWV3LWJ0biB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA1cHggOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogNzVweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICAgICAgZ2FwOiA0cHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogM3B4IDRweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZG93bmxvYWQtYnRuLAogICAgICAgIC5kZXBsb3ktbmV0bGlmeS1idG4sCiAgICAgICAgLnNldC10b2tlbi1idG4gewogICAgICAgICAgICBtaW4td2lkdGg6IDI4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDI4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDRweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZG93bmxvYWQtaWNvbiwKICAgICAgICAuZGVwbG95LWljb24sCiAgICAgICAgLnNldC10b2tlbi1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDE2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5kb3dubG9hZC1pY29uIHN2ZywKICAgICAgICAuZGVwbG95LWljb24gc3ZnLAogICAgICAgIC5zZXQtdG9rZW4taWNvbiBzdmcgewogICAgICAgICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qIFRhYmxldCBzY3JlZW5zICg0ODFweCB0byA3NjhweCkgKi8KICAgIEBtZWRpYSAobWluLXdpZHRoOiA0ODFweCkgYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC50b2dnbGUtdmlldy1idG4gewogICAgICAgICAgICBmb250LXNpemU6IDExcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICAgICAgZ2FwOiA4cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qIE1lZGl1bSB0YWJsZXRzICg3NjlweCB0byAxMDI0cHgpICovCiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHsKICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAudG9nZ2xlLXZpZXctYnRuIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAxNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi13aWR0aDogMTEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZG93bmxvYWQtYnRuLAogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZGVwbG95LW5ldGxpZnktYnRuLAogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuc2V0LXRva2VuLWJ0biB7CiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDM0cHggIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiA2cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5kb3dubG9hZC1idG4gc3Bhbjpub3QoLmRvd25sb2FkLWljb24pLAogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZGVwbG95LW5ldGxpZnktYnRuIHNwYW46bm90KC5kZXBsb3ktaWNvbiksCiAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5zZXQtdG9rZW4tYnRuIHNwYW46bm90KC5zZXQtdG9rZW4taWNvbikgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCB0ZXN0aW1vbmlhbCByZXNwb25zaXZlbmVzcyAqLwogICAgLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICAgICAgbWluLWhlaWdodDogMzAwcHg7CiAgICAgICAgcGFkZGluZzogMCAwLjVyZW07CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMS41cmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtbmF2IHsKICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgICAgIGxlZnQ6IDVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLW5hdi5uZXh0LWJ0biB7CiAgICAgICAgcmlnaHQ6IDVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWNhcmQgewogICAgICAgIHBhZGRpbmc6IDFyZW07CiAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF2YXRhciB7CiAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtcXVvdGUgewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF1dGhvci1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF1dGhvci1jb21wYW55IHsKICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWRvdHMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgICAgICBnYXA6IDAuNXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWRvdHMgLmRvdCB7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgIH0KICAgIAogICAgLmZlYXR1cmVzLWdyaWQsIC5wb3NzaWJpbGl0aWVzLWdyaWQsIC5jYXBhYmlsaXRpZXMtZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgICBnYXA6IDFyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogQWRqdXN0IHRvcCBtYXJnaW4gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgIGJvZHkgewogICAgICAgIG1hcmdpbi10b3A6IDUwcHg7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogRXh0ZW5kIGJhY2tncm91bmQgcGF0dGVybiBkb3duIGZ1cnRoZXIgb24gc21hbGwgc2NyZWVucyAqLwogICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICB9Cn0KCmJvZHkgewogICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgbWFyZ2luOiAwOwogICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSwgY29sb3IgMC4zcyBlYXNlOwogICAgb3ZlcmZsb3cteDogaGlkZGVuOwp9CgovKiBIaWRlIG1haW4gcGFnZSBzY3JvbGxiYXIgd2hlbiBhcHAgaXMgYWN0aXZlICovCmJvZHkuYXBwLWFjdGl2ZSB7CiAgICAvKiBvdmVyZmxvdzogaGlkZGVuOwogICAgaGVpZ2h0OiAxMDB2aDsgKi8KICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwp9CgovKiBNb2JpbGUgYm9keSBoYW5kbGluZyAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIGJvZHkuYXBwLWFjdGl2ZSB7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgfQp9CgovKiBEZXNrdG9wIHNjcmVlbnMgYWJvdmUgNzY4cHggLSByZW1vdmUgd2hpdGUgc3BhY2VzICovCkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkgewogICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgfQogICAgCiAgICAuaGVhZGVyLWZsZXggewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KfQoKLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CgouaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgIHBhZGRpbmc6IDFyZW0gMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICB6LWluZGV4OiAxMDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLCBvcGFjaXR5IDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgIGRpc3BsYXk6IG5vbmU7IC8qIEhpZGRlbiBieSBkZWZhdWx0IG9uIGxhbmRpbmcgcGFnZSAqLwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICBib3gtc2hhZG93OiAwIDJweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwp9CgovKiBTaG93IGhlYWRlciBvbmx5IHdoZW4gY29udmVyc2F0aW9uIGhhcyBzdGFydGVkICovCmJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKfQoKLyogRnVsbC13aWR0aCBoZWFkZXIgZml4IG9ubHkgd2hlbiBhcHAgaXMgYWN0aXZlIChkdXJpbmcgZ2VuZXJhdGlvbikgLSBhYm92ZSAxMDI0cHggKi8KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXIsCiAgICBib2R5LmFwcC1hY3RpdmUgI3dyYXBwZXIgLmhlYWRlciwKICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXdyYXBwZXIgLmhlYWRlciwKICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuaGVhZGVyLAogICAgYm9keS5hcHAtYWN0aXZlIC5mdXNpb24tcGFnZS13cmFwcGVyLXJvdyAuaGVhZGVyIHsKICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IGNhbGMoMXJlbSArIDUwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXRvcDogLTUwcHggIWltcG9ydGFudDsKICAgIH0KfQoKLmhlYWRlci1mbGV4IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5sb2dvLWdyb3VwIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7Cn0KCi5sb2dvLWdyb3VwOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjE1KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7Cn0KCi5sb2dvLWljb24gewogICAgZm9udC1zaXplOiAxLjVyZW07CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHRleHQtc2hhZG93OiAwIDAgMTBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKfQoKLmxvZ28tdGV4dCB7CiAgICBmb250LXNpemU6IDEuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOwp9CgoubG9nby10ZXh0IC5ib2xkIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouaGVhZGVyLXJpZ2h0IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgcGFkZGluZzogNnB4IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAyMHB4Owp9CgouZ2l0aHViLWJ0biB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogNXB4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgZm9udC1zaXplOiAwLjk1cmVtOwp9CgouZG93bmxvYWQtYnRuIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICMzNTdhYmQpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIG1pbi13aWR0aDogNDBweDsKICAgIGhlaWdodDogMzZweDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5kb3dubG9hZC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzM1N2FiZCwgIzJhNmFhMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9CgouZG93bmxvYWQtYnRuOmFjdGl2ZSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi5kZXBsb3ktbmV0bGlmeS1idG4gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwYWQ5ZiwgIzAwZDRhYSk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWluLXdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiAzNnB4OwogICAgei1pbmRleDogOTk5OTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGdhcDogNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5kZXBsb3ktbmV0bGlmeS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTQ3ZiwgIzAwYjM5NCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTczLCAxNTksIDAuMyk7Cn0KCi5kZXBsb3ktbmV0bGlmeS1idG46YWN0aXZlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKfQoKLyogU2V0IFRva2VuIGJ1dHRvbiBzdHlsZWQgdG8gbWF0Y2ggRGVwbG95IHRvIE5ldGxpZnkgKi8KLnNldC10b2tlbi1idG4gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwYWQ5ZiwgIzAwZDRhYSk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWluLXdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiAzNnB4OwogICAgei1pbmRleDogOTk5OTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGdhcDogNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5zZXQtdG9rZW4tYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwp9Cgouc2V0LXRva2VuLWJ0bjphY3RpdmUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwp9CgouZG93bmxvYWQtaWNvbiB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoucG93ZXJlZC1waWxsIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbjogMnJlbSBhdXRvOwogICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIHBhZGRpbmc6IDhweCAyMHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZTsKICAgIC8qIE1lcmdlZCBkYXJrIHRoZW1lIHN0eWxlcyAqLwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwp9CgoubWFpbi1oZWFkaW5nIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMi43cmVtOwogICAgbWFyZ2luLWJvdHRvbTogMi41cmVtOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKfQoKLyogVHlwaW5nIGFuaW1hdGlvbiBzdHlsZXMgKi8KI2FuaW1hdGVkLXdvcmQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWluLXdpZHRoOiAxMjBweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCiNhbmltYXRlZC13b3JkOjphZnRlciB7CiAgICBjb250ZW50OiAnfCc7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBhbmltYXRpb246IGJsaW5rIDFzIGluZmluaXRlOwogICAgbWFyZ2luLWxlZnQ6IDJweDsKfQoKQGtleWZyYW1lcyBibGluayB7CiAgICAwJSwgNTAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgNTElLCAxMDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIHR5cGV3cml0ZXIgewogICAgZnJvbSB7CiAgICAgICAgd2lkdGg6IDA7CiAgICB9CiAgICB0byB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9Cn0KCi5tYWluLWhlYWRpbmcgLmJsdWUgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwp9CgovKiBMYW5kaW5nIHBhZ2UgaW5wdXQgc3R5bGluZyAtIEV4dGVuZGVkIHRvcCBhbmQgYm90dG9tIGNvdmVyYWdlICovCiNsYW5kaW5nU2VjdGlvbiB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjMwcHgpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogODBweCAwIDE1MHB4IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IC04MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAtMTUwcHggIWltcG9ydGFudDsKfQoKLyogQW5pbWF0ZWQgc3RhcnJ5IGJhY2tncm91bmQgKi8KI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEwMHB4KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IAogICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDIwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpLAogICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDQwcHggNzBweCwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuOCksIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCA5MHB4IDQwcHgsICM2YjczZmYsIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCAxMzBweCA4MHB4LCByZ2JhKDEwNywgMTE1LCAyNTUsIDAuNiksIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCAxNjBweCAzMHB4LCAjNGE5MGUyLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiAyMDBweCAxMDBweDsKICAgIGFuaW1hdGlvbjogdHdpbmtsZSAzcyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7CiAgICB6LWluZGV4OiAwOwp9CgpAa2V5ZnJhbWVzIHR3aW5rbGUgewogICAgMCUgeyBvcGFjaXR5OiAwLjM7IH0KICAgIDEwMCUgeyBvcGFjaXR5OiAwLjg7IH0KfQoKLyogSGVybyBTZWN0aW9uICovCi5oZXJvLXNlY3Rpb24gewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMHJlbSAwIDByZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9Ci5pbnNpZGUtaGVyby1zZWN0aW9uewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmhlcm8taWNvbiB7CiAgICBmb250LXNpemU6IDNyZW07CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBjb2xvcjogIzRhOTBlMjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGFuaW1hdGlvbjogZmxvYXQgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7Cn0KCi5oZXJvLWljb24gaW1nIHsKICAgIHdpZHRoOiA0cmVtOwogICAgaGVpZ2h0OiAyLjVyZW07CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCkBrZXlmcmFtZXMgZmxvYXQgewogICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgfQogICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsgfQp9CgouaGVyby10aXRsZSB7CiAgICBmb250LXNpemU6IDMuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB0ZXh0LXNoYWRvdzogMCAwIDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7Cn0KCi5oZXJvLXN1YnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5oZXJvLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi8qIFVwZGF0ZSBpbnB1dCBzZWN0aW9uIGZvciBkYXJrIHRoZW1lICovCiNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgLyogTWVyZ2VkIHN0eWxlcyAqLwogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgIG1heC13aWR0aDogNzAwcHg7Cn0KCiNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtaW5uZXItY29udGFpbmVyLnZlcnRpY2FsIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgojbGFuZGluZ1NlY3Rpb24gLnByb21wdC1pbnB1dCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMDsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICByZXNpemU6IG5vbmU7CiAgICBtaW4taGVpZ2h0OiA2MHB4OwogICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICBvdXRsaW5lOiBub25lOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCiNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweDsKICAgIHdpZHRoOiAxMDAlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICBnYXA6IDEycHg7CiAgICAvKiBNZXJnZWQvdXBkYXRlZCBzdHlsZXMgKi8KICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKfQoKI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7Cn0KCi5nZW5lcmF0ZS1jb2RlLWJ0biB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjNmI3M2ZmKSAhaW1wb3J0YW50OwogICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgbWluLXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxNTBweCAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5nZW5lcmF0ZS1jb2RlLWJ0bjpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCkgIWltcG9ydGFudDsKfQoKLyogRmVhdHVyZXMgR3JpZCAqLwouZmVhdHVyZXMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7CiAgICBnYXA6IDJyZW07CiAgICBtYXJnaW46IDRyZW0gMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5mZWF0dXJlLWNhcmQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICBwYWRkaW5nOiAycmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5mZWF0dXJlLWNhcmQ6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IC0xMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7Cn0KCi5mZWF0dXJlLWNhcmQ6aG92ZXI6OmJlZm9yZSB7CiAgICBsZWZ0OiAxMDAlOwp9CgouZmVhdHVyZS1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKfQoKLmZlYXR1cmUtaWNvbiB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIGNvbG9yOiAjNGE5MGUyOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmZlYXR1cmUtaWNvbiBpbWcgewogICAgd2lkdGg6IDIuNXJlbTsKICAgIGhlaWdodDogMi41cmVtOwogICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgovKiBBZ2dyZXNzaXZlIFdvcmRQcmVzcyB3aGl0ZSBzcGFjZSByZW1vdmFsICovCmJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlci1mbGV4LApib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSkgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgcmVtb3ZlIGFueSBXb3JkUHJlc3MgY29udGFpbmVyIGNvbnN0cmFpbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyAjbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtYm94ZWQtbW9kZSAjbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtd2lkZS1tb2RlICNtYWluLApib2R5LnBhZ2UtaWQtNTkzNjMgLmxheW91dC13aWRlLW1vZGUgI3dyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYW55IFdvcmRQcmVzcyB0aGVtZSBwYWRkaW5nL21hcmdpbnMgKi8KYm9keS5wYWdlLWlkLTU5MzYzICogewogICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50Owp9CgovKiBUYXJnZXQgc3BlY2lmaWMgV29yZFByZXNzIHRoZW1lIGVsZW1lbnRzIGNhdXNpbmcgd2hpdGUgc3BhY2VzICovCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24taGVhZGVyLXdyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLXNlY29uZGFyeS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLW1haW4taGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmF2YWRhLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXItd3JhcHBlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLWhlYWRlciB7CiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBhbnkgV29yZFByZXNzIHRoZW1lIGNvbnRhaW5lciBwYWRkaW5nICovCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tcm93LApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1jb2x1bW4sCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93LApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLWNvbHVtbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgaGVhZGVyIHRvIGJyZWFrIG91dCBvZiBhbnkgY29udGFpbmVyIGNvbnN0cmFpbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgbGVmdDogMCAhaW1wb3J0YW50OwogICAgcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50Owp9Cgpib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciAqLApib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyICogewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi8qIE92ZXJyaWRlIFdvcmRQcmVzcyBiYWNrZ3JvdW5kIGNvbG9yIGZvciBtYWluIGVsZW1lbnRzICovCiNtYWluLCAKLmxheW91dC1ib3hlZC1tb2RlICNtYWluLCAKLmxheW91dC1ib3hlZC1tb2RlLmF2YWRhLWZvb3Rlci1meC1zdGlja3kgLmFib3ZlLWZvb3Rlci13cmFwcGVyLCAKLmxheW91dC1ib3hlZC1tb2RlLmF2YWRhLWZvb3Rlci1meC1zdGlja3ktd2l0aC1wYXJhbGxheC1iZy1pbWFnZSAuYWJvdmUtZm9vdGVyLXdyYXBwZXIsIAoubGF5b3V0LXdpZGUtbW9kZSAjbWFpbiwgCi5sYXlvdXQtd2lkZS1tb2RlICN3cmFwcGVyLCAKYm9keSwgCmh0bWwsIApodG1sIGJvZHkuY3VzdG9tLWJhY2tncm91bmQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBGaXggV29yZFByZXNzIHRlbXBsYXRlIGVsZW1lbnRzIC0gcmVtb3ZlIHVud2FudGVkIGxpbmVzIGFuZCBiYWNrZ3JvdW5kcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgKiB7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIHdoaXRlIGxpbmUgYXQgdG9wIG9mIFdvcmRQcmVzcyBpbnRlcmZhY2UgKi8KYm9keS5wYWdlLWlkLTU5MzYzOjpiZWZvcmUsCmJvZHkucGFnZS1pZC01OTM2Mzo6YWZ0ZXIsCmJvZHkucGFnZS1pZC01OTM2MyAqOjpiZWZvcmUsCmJvZHkucGFnZS1pZC01OTM2MyAqOjphZnRlciB7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSB0b3AgYm9yZGVycyBhbmQgbGluZXMgZnJvbSBXb3JkUHJlc3MgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIGJvZHksCmJvZHkucGFnZS1pZC01OTM2MyBodG1sLApib2R5LnBhZ2UtaWQtNTkzNjMgI3BhZ2UsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLW1haW4sCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1mb290ZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3Atc2l0ZS1ibG9ja3MsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stZ3JvdXAsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtY29udGFpbmVyIHsKICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlci1sZWZ0OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmlnaHQ6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgc3BlY2lmaWMgYm9yZGVycyBmcm9tIFdvcmRQcmVzcyBlbGVtZW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgZGl2LApib2R5LnBhZ2UtaWQtNTkzNjMgc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIGFydGljbGUsCmJvZHkucGFnZS1pZC01OTM2MyBtYWluLApib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgZm9vdGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgbmF2LApib2R5LnBhZ2UtaWQtNTkzNjMgYXNpZGUgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItbGVmdDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBiYWNrZ3JvdW5kcyBmcm9tIFdvcmRQcmVzcyB0ZW1wbGF0ZSBlbGVtZW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1ncm91cCwKYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1jb2x1bW4sCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stY29sdW1ucywKYm9keS5wYWdlLWlkLTU5MzYzIC5lbnRyeS1jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LWFyZWEgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBXb3JkUHJlc3MgYWRtaW4gYmFyIGFuZCB0b3AgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzICN3cGFkbWluYmFyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFkbWluLWJhciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cC1hZG1pbi1iYXIsCmJvZHkucGFnZS1pZC01OTM2MyBbaWQqPSJhZG1pbiJdLApib2R5LnBhZ2UtaWQtNTkzNjMgW2NsYXNzKj0iYWRtaW4iXSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIHJlbW92ZSBhbnkgdG9wLWxldmVsIGJvcmRlcnMgKi8KYm9keS5wYWdlLWlkLTU5MzYzID4gKiB7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzLXNwZWNpZmljIG1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXhlcyAtIGluY3JlYXNlZCAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDgwMHB4KSAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Owp9Cgpib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA4MDBweCkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIG1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBleHRlbnNpb24gLSBpbmNyZWFzZWQgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICBib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgfQp9CgovKiBBZGRpdGlvbmFsIFdvcmRQcmVzcyBvdmVycmlkZXMgZm9yIGZlYXR1cmUgY2FyZHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLWNhcmQgaDMsCmJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLnBvc3NpYmlsaXR5LWNhcmQgaDMgewogICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzLXNwZWNpZmljIGhlYWRpbmcgY29sb3IgZml4ZXMgKi8KLyogV29yZFByZXNzLXNwZWNpZmljIGhlYWRpbmcgY29sb3IgZml4ZXMgLSBvbmx5IGZvciBvdXIgYXBwIGNvbnRlbnQgKi8KYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMSwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMiwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMywKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNCwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNSwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNiwKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGgxLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDIsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoMywKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGg0LApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDUsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoNiB7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50Owp9CgovKiBTcGVjaWZpYyBXb3JkUHJlc3Mgb3ZlcnJpZGVzIGZvciBmZWF0dXJlIHRpdGxlcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmZlYXR1cmUtdGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLWNhcmQgaDMsCmJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLnBvc3NpYmlsaXR5LWNhcmQgaDMgewogICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKfQoKLyogRW5zdXJlIGZlYXR1cmUgdGl0bGVzIGFyZSBibHVlIGluIFdvcmRQcmVzcyAqLwouZmVhdHVyZS10aXRsZSB7CiAgICBjb2xvcjogIzRhOTBlMiAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50Owp9CgovKiBGdXNpb24gQnVpbGRlciBhbmQgV29yZFByZXNzIGgxIGNvbG9yIG92ZXJyaWRlICovCmZ1c2lvbi1tb2RhbCBoMSwgLmZ1c2lvbi1wb3N0LWNvbnRlbnQgaDEsIC5mdXNpb24tdGItZm9vdGVyIGgxLCAuZnVzaW9uLXRiLXBhZ2UtdGl0bGUtYmFyIGgxLCAuZnVzaW9uLXdpZGdldC1hcmVhIGgxLCAucG9zdC1jb250ZW50IGgxLCAuc2VhcmNoLXBhZ2Utc2VhcmNoLWZvcm0gaDEsIC50aXRsZSBoMSwgaDEgewogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKfQoKLyogRnVzaW9uIEJ1aWxkZXIgYW5kIFdvcmRQcmVzcyBoMyBjb2xvciBvdmVycmlkZSAqLwouZnVzaW9uLWF1dGhvciAuZnVzaW9uLWF1dGhvci10aXRsZSwgLmZ1c2lvbi1tb2RhbCAubW9kYWwtdGl0bGUsIC5mdXNpb24td2lkZ2V0LWFyZWEgaDMsIC5wb3N0LWNvbnRlbnQgaDMsIC5wcm9qZWN0LWNvbnRlbnQgaDMsIC5zaWRlYmFyIC53aWRnZXQgaDMsIC5tYWluLWZsZXggLnNsaWRlLWNvbnRlbnQgaDMsIGgzIHsKICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7Cn0KCi8qIEdsb2JhbCBzdHlsZXMgZm9yIGFsbCBzZWN0aW9uIHN1YnRpdGxlcyAtIGVuc3VyZSBjZW50ZXJpbmcgKi8KLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKLmVuZGxlc3Mtc3VidGl0bGUsCi5hY3Rpb24tc3VidGl0bGUsCi5tb3JlLXN1YnRpdGxlLAoubG92ZWQtc3VidGl0bGUsCi5jdGEtc3VidGl0bGUgewogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLyogR2xvYmFsIHN0eWxlcyBmb3IgYWxsIHNlY3Rpb24gdGl0bGVzIC0gZW5zdXJlIGNlbnRlcmluZyAqLwouaG93LWl0LXdvcmtzLXRpdGxlLAouZW5kbGVzcy10aXRsZSwKLmFjdGlvbi10aXRsZSwKLm1vcmUtdGl0bGUsCi5sb3ZlZC10aXRsZSwKLmN0YS10aXRsZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouZmVhdHVyZS1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnF1aWNrLWFwcHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGdhcDogMXJlbTsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLXRvcDogM3JlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5xdWljay1hcHAtYnRuIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtOwogICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpOwp9CgoucXVpY2stYXBwLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKfQoKLyogSG93IEl0IFdvcmtzIFNlY3Rpb24gKi8KLmhvdy1pdC13b3Jrcy1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgMnJlbSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCi5ob3ctaXQtd29ya3MtdGl0bGUgewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLnRleHQtd2hpdGV7CiAgICBjb2xvcjogd2hpdGU7Cn0KCi5zdGVwcy1jb250YWluZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMnJlbTsKICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDAgMXJlbTsKICAgIG1heC13aWR0aDogOTAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnN0ZXAtY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgIHBhZGRpbmc6IDJyZW0gMS41cmVtOwogICAgbWF4LXdpZHRoOiAyODBweDsKICAgIGZsZXg6IDE7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9Cgouc3RlcC1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9Cgouc3RlcC1udW1iZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtMTVweDsKICAgIGxlZnQ6IC01cHg7CiAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgY29sb3I6IHdoaXRlOwogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDM1cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmb250LXNpemU6IDAuOXJlbTsKfQoKLnN0ZXAtaWNvbiB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIG1hcmdpbjogMXJlbSAwOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5zdGVwLWljb24gaW1nIHsKICAgIHdpZHRoOiAyLjVyZW07CiAgICBoZWlnaHQ6IDIuNXJlbTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMCBhdXRvOwp9Cgouc3RlcC10aXRsZSB7CiAgICBmb250LXNpemU6IDEuM3JlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5zdGVwLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBsaW5lLWhlaWdodDogMS41Owp9Cgouc3RlcC1hcnJvdyB7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBmb250LXNpemU6IDJyZW07CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZsZXg6IDAgMCBhdXRvOwp9CgoudHJ5LW5vdy1idG4gewogICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IDFyZW0gMi41cmVtOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDQyLCA2NSwgMjMxLCAwLjMpOwp9CgoudHJ5LW5vdy1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogIzFlMmViMzsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg0MiwgNjUsIDIzMSwgMC40KTsKfQoKLyogRW5kbGVzcyBQb3NzaWJpbGl0aWVzIFNlY3Rpb24gKi8KLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgMnJlbSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5lbmRsZXNzLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5lbmRsZXNzLXN1YnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgoucG9zc2liaWxpdGllcy1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI0MHB4LCAxZnIpKTsKICAgIGdhcDogMXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDVyZW07Cn0KCi5wb3NzaWJpbGl0eS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogMXJlbSAxLjVyZW07CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnBvc3NpYmlsaXR5LWNhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKfQoKLnBvc3NpYmlsaXR5LWljb24gewogICAgd2lkdGg6IDQ4cHg7CiAgICBoZWlnaHQ6IDQ4cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IDEuNXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwp9CgoucG9zc2liaWxpdHktaWNvbiBpbWcgewogICAgd2lkdGg6IDI0cHg7CiAgICBoZWlnaHQ6IDI0cHg7CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5wb3NzaWJpbGl0eS10aXRsZSB7CiAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTsKfQoKLnBvc3NpYmlsaXR5LWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBsaW5lLWhlaWdodDogMS41Owp9CgoucG9wdWxhci1wcm9tcHRzLXNlY3Rpb24gewogICAgbWFyZ2luLXRvcDogNHJlbTsKfQoKLnBvcHVsYXItcHJvbXB0cy10aXRsZSB7CiAgICBmb250LXNpemU6IDEuOHJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDJyZW07Cn0KCi5wb3B1bGFyLXByb21wdHMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMjBweCwgMWZyKSk7CiAgICBnYXA6IDFyZW07CiAgICBtYXgtd2lkdGg6IDEwMDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwp9CgoucG9wdWxhci1wcm9tcHQtYnRuIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgcGFkZGluZzogMXJlbSAwLjVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnBvcHVsYXItcHJvbXB0LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKfQoKLyogU2VlIEl0IEluIEFjdGlvbiBTZWN0aW9uICovCi5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24gewogICAgbWFyZ2luOiA2cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAycmVtICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLmFjdGlvbi10aXRsZSB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouYWN0aW9uLXN1YnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgouZGVtby10YWJzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICBnYXA6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBwYWRkaW5nOiA0cHg7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBtYXgtd2lkdGg6IDI1MHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5kZW1vLXRhYiB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHdpZHRoOiAxMDAlOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgZ2FwOiAwLjVyZW07CiAgICBmbGV4OiAxOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtaW4td2lkdGg6IDE5NXB4Owp9CgouZGVtby10YWI6aG92ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7Cn0KCi5kZW1vLXRhYi5hY3RpdmUgewogICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDQyLCA2NSwgMjMxLCAwLjMpOwp9CgoudGFiLWljb24gewogICAgZm9udC1zaXplOiAxcmVtOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoKLnRhYi1pY29uIGltZyB7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnRhYi10ZXh0IHsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KCi5kZW1vLWNvbnRlbnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWluLWhlaWdodDogNjAwcHg7Cn0KCi5kZW1vLXBhbmUgewogICAgZGlzcGxheTogbm9uZTsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKfQoKLmRlbW8tcGFuZS5hY3RpdmUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBvcGFjaXR5OiAxOwp9CgouZGVtby1wcm9tcHQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtOwogICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxcmVtOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgoucHJvbXB0LWljb24gewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAwLjVyZW07CiAgICBmb250LXNpemU6IDEuMnJlbTsKfQoKLmRlbW8tcHJvbXB0IHNwYW4gewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGZvbnQtc2l6ZTogMXJlbTsKfQoKLmRlbW8tY29kZS1jb250YWluZXIgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKfQoKLmNvZGUtaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Cn0KCi5jb2RlLWRvdHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogMC41cmVtOwp9CgouZG90IHsKICAgIHdpZHRoOiAxMnB4OwogICAgaGVpZ2h0OiAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwp9CgouZG90LnJlZCB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1ZjU2Owp9CgouZG90LnllbGxvdyB7CiAgICBiYWNrZ3JvdW5kOiAjZmZiZDJlOwp9CgouZG90LmdyZWVuIHsKICAgIGJhY2tncm91bmQ6ICMyN2NhM2Y7Cn0KCi5jb2RlLXRpdGxlIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICBmb250LXdlaWdodDogNTAwOwp9CgouY29weS1idG4gewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDAuNHJlbSAwLjhyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmNvcHktYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgY29sb3I6IHdoaXRlOwp9CgouY29kZS1pbWFnZS1jb250YWluZXIgewogICAgcGFkZGluZzogMXJlbTsKICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7Cn0KCi5jb2RlLWltYWdlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9CgovKiBNb2JpbGUgVUkgRGVtbyBTdHlsZXMgKi8KLmNvZGUtcHJldmlldyB7CiAgICBwYWRkaW5nOiAycmVtOwogICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtaW4taGVpZ2h0OiA0MDBweDsKfQoKLm1vYmlsZS1tb2NrdXAgewogICAgYmFja2dyb3VuZDogIzJkMmQyZDsKICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICBwYWRkaW5nOiAycmVtOwogICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjMpOwp9CgoucHJvZmlsZS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMnJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIHdpZHRoOiAyNTBweDsKfQoKLnByb2ZpbGUtYXZhdGFyIHsKICAgIHdpZHRoOiA4MHB4OwogICAgaGVpZ2h0OiA4MHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAycmVtOwogICAgbWFyZ2luOiAwIGF1dG8gMXJlbTsKfQoKLnByb2ZpbGUtY2FyZCBoMyB7CiAgICBjb2xvcjogd2hpdGU7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBmb250LXNpemU6IDEuMnJlbTsKfQoKLnByb2ZpbGUtY2FyZCBwIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICBmb250LXNpemU6IDAuOXJlbTsKfQoKLnByb2ZpbGUtYnRuIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJsdWUtY29sb3IpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgIHBhZGRpbmc6IDAuOHJlbSAycmVtOwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5wcm9maWxlLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjM2E3YmM4OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwp9CgovKiBNb3JlIENhcGFiaWxpdGllcyBTZWN0aW9uICovCi5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDRyZW0gMnJlbSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDIpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIDEwMCUpOwogICAgYm9yZGVyLXJhZGl1czogMjRweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKfQouZmxleHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDFyZW07Cn0KCi5tb3JlLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogM3JlbTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAxcmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgoubW9yZS1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLmNhcGFiaWxpdGllcy1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgZ2FwOiAycmVtOwogICAgbWFyZ2luLXRvcDogMnJlbTsKfQoKLmNhcGFiaWxpdHktY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAyMywgNDIsIDAuOCk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMi41cmVtIDJyZW07CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5jYXBhYmlsaXR5LWNhcmQ6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMikgMTAwJSk7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4Owp9CgouY2FwYWJpbGl0eS1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoKLmNhcGFiaWxpdHktY2FyZDpob3Zlcjo6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDE7Cn0KCi5jYXBhYmlsaXR5LWljb24gewogICAgd2lkdGg6IDY0cHg7CiAgICBoZWlnaHQ6IDY0cHg7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgbWFyZ2luOiAwIGF1dG8gMS41cmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLndlYi1pY29uIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwp9Cgoud2ViLWljb24gaW1nIHsKICAgIHdpZHRoOiA2MCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogNjAlICFpbXBvcnRhbnQ7Cn0KCi5weXRob24taWNvbiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKfQoKLmRhdGEtaWNvbiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKfQoKLmFwaS1pY29uIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwp9CgoubW9iaWxlLWljb24gewogICAgYmFja2dyb3VuZDogd2hpdGU7Cn0KCi5kZXZvcHMtaWNvbiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKfQoKLmNhcGFiaWxpdHktaWNvbiBpbWcgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgYm9yZGVyLXJhZGl1czogOHB4Owp9CgouY2FwYWJpbGl0eS10aXRsZSB7CiAgICBmb250LXNpemU6IDEuM3JlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9CgouY2FwYWJpbGl0eS1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi8qIEdyYWRpZW50IFRleHQgKi8KLmdyYWRpZW50LXRleHQgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCA0NWRlZywgI2ZmOGE4MCwgIzgwZGVlYSwgIzgxZDRmYSwgI2E1ZDZhNywgI2ZmZjU5ZCwgI2UxYmVlNywgI2IyZGZkYiApOwogICAgYmFja2dyb3VuZC1zaXplOiA0MDAlIDQwMCU7IGJhY2tncm91bmQtY2xpcDogdGV4dDsgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7IGFuaW1hdGlvbjogZ3JhZGllbnRGbG93IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7IGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQpAa2V5ZnJhbWVzIGdyYWRpZW50RmxvdyB7IDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9IDI1JSB7IGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgNTAlOyB9IDUwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTAwJTsgfSA3NSUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAxMDAlOyB9IDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7IH0gfQoKLyogRm9vdGVyICovCi5mb290ZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwOwogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgcGFkZGluZzogMC42cmVtIDJyZW07CiAgICBmb250LXNpemU6IDAuODVyZW07CiAgICBtYXJnaW4tdG9wOiBhdXRvOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBvcGFjaXR5OiAxOwp9Ci5mb290ZXItbGVmdCBhIHsgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KLmZvb3Rlci1yaWdodCB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTJweDsgfQouZm9vdGVyLWljb24geyBmb250LXNpemU6IDEuM3JlbTsgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsgfQouZm9vdGVyLWljb246aG92ZXIgeyBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7IH0KCi8qIC0tLSBDSEFUICYgQVBQIElOVEVSRkFDRSBTVFlMRVMgLS0tICovCgovKiBJbml0aWFsbHkgaGlkZSBjaGF0IGludGVyZmFjZSAqLwojY2hhdEludGVyZmFjZSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgovKiBDaGF0IGludGVyZmFjZSBjb250YWluZXIgKi8KLmNoYXQtaW50ZXJmYWNlIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgaGVpZ2h0OiAxMDAlOyAvKiBDaGFuZ2VkIGZyb20gY2FsYygpIHRvIHRha2UgZnVsbCBoZWlnaHQgb2YgcGFyZW50ICovCiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgcGFkZGluZzogMDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNvbG9yKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY2hhdC1tZXNzYWdlcyB7CiAgICBmbGV4OiAxOwogICAgcGFkZGluZzogMjRweDsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdhcDogMThweDsKICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgbWF4LWhlaWdodDogNjB2aDsKfQoKLmNoYXQtbWVzc2FnZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgZ2FwOiAxMnB4OwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLmNoYXQtbWVzc2FnZS51c2VyIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKfQoKLmNoYXQtbWVzc2FnZSAuYXZhdGFyIHsKICAgIGZvbnQtc2l6ZTogMS43cmVtOwogICAgbWFyZ2luLWJvdHRvbTogMnB4Owp9CgovKiBDb25zb2xpZGF0ZWQgQ2hhdCBCdWJibGUgU3R5bGVzICovCi5jaGF0LWJ1YmJsZSB7CiAgICBwYWRkaW5nOiAxNHB4IDE4cHg7CiAgICBtYXJnaW46IDEwcHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZm9udC1zaXplOiAxLjA1cmVtOwogICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgbWF4LXdpZHRoOiA5MCU7Cn0KCi5jaGF0LWJ1YmJsZS51c2VyIHsKICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7Cn0KCi5jaGF0LWJ1YmJsZS51c2VyOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICByaWdodDogLThweDsKICAgIHdpZHRoOiA4cHg7CiAgICBoZWlnaHQ6IDhweDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMCUgMTAwJSwgMTAwJSAxMDAlKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwp9CgovKiBJbnB1dCBjb250YWluZXIgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY2hhdCB2aWV3ICovCi5pbnB1dC1jb250YWluZXIgewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN1cmZhY2UtY29sb3IpOwogICAgcGFkZGluZzogMTBweCAyMHB4OwogICAgei1pbmRleDogMTAwMDsKICAgIHdpZHRoOiAxMDAlOwogICAgYm94LXNoYWRvdzogMCAtMnB4IDEwcHggdmFyKC0tc2hhZG93KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCiNjaGF0SW50ZXJmYWNlIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWlucHV0LWJnKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgYm94LXNoYWRvdzogMCAycHggMTZweCB2YXIoLS1zaGFkb3cpOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgIHBhZGRpbmc6IDA7CiAgICBnYXA6IDA7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCiNjaGF0SW50ZXJmYWNlIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICBtaW4taGVpZ2h0OiA0NnB4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKfQoKI2NoYXRJbnRlcmZhY2UgLnN1Ym1pdC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogIzNhODBkMjsKfQoKLyogTG9hZGluZyBCb3ggU3R5bGVzICovCi5sb2FkaW5nLWJveCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMCwgMCwgMCwgMC45NSkgMCUsIHJnYmEoMjAsIDIwLCAyMCwgMC45OCkgMTAwJSk7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgYm94LXNoYWRvdzogMCAxMnB4IDQ4cHggcmdiYSgwLCAwLCAwLCAwLjQpLCAwIDAgMCAxcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICB3aWR0aDogNzAlOwogICAgbWF4LXdpZHRoOiA0NTBweDsKICAgIG1pbi1oZWlnaHQ6IDE0MHB4OwogICAgbWFyZ2luOiAycmVtIGF1dG87CiAgICBwYWRkaW5nOiA0MHB4IDMwcHggMzVweCAzMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogOTk5OTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICBhbmltYXRpb246IGxvYWRpbmdCb3hFbnRyYW5jZSAwLjdzIGVhc2Utb3V0LCBsb2FkaW5nQm94UHVsc2UgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoubG9hZGluZy1ib3g6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IC0xMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgYW5pbWF0aW9uOiBsb2FkaW5nU2hpbW1lciAycyBpbmZpbml0ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5sb2FkaW5nLWJveDo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgaGVpZ2h0OiAzcHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICM0YTkwZTIsICMzNTdhYmQsICM0YTkwZTIpOwogICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDEwMCU7CiAgICBhbmltYXRpb246IGxvYWRpbmdQcm9ncmVzcyAyLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlLCBncmFkaWVudE1vdmUgMS41cyBsaW5lYXIgaW5maW5pdGU7CiAgICBib3JkZXItcmFkaXVzOiAwIDAgMjBweCAyMHB4OwogICAgei1pbmRleDogMjsKfQoKLmxvYWRpbmctb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDAsIDAsIDAsIDAuOTcpIDAlLCByZ2JhKDIwLCAyMCwgMjAsIDAuOTkpIDEwMCUpOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB6LWluZGV4OiAxMDAwOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE1cHgpOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLyogSGktdGVjaCBsb2FkaW5nIGFuaW1hdGlvbiAqLwouaGl0ZWNoLWxvYWRlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMjAwcHg7CiAgICBoZWlnaHQ6IDIwMHB4OwogICAgbWFyZ2luOiAyMHB4IGF1dG87Cn0KCi8qIENvZGUgTWF0cml4IEVmZmVjdCAqLwouY29kZS1tYXRyaXggewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLm1hdHJpeC1saW5lIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAycHg7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB0cmFuc3BhcmVudCAwJSwgIzAwZmY0MSA1MCUsIHRyYW5zcGFyZW50IDEwMCUpOwogICAgYW5pbWF0aW9uOiBtYXRyaXhSYWluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIG9wYWNpdHk6IDAuNzsKfQoKLm1hdHJpeC1saW5lOm50aC1jaGlsZCgxKSB7IGxlZnQ6IDIwJTsgYW5pbWF0aW9uLWRlbGF5OiAwczsgfQoubWF0cml4LWxpbmU6bnRoLWNoaWxkKDIpIHsgbGVmdDogNDAlOyBhbmltYXRpb24tZGVsYXk6IDAuNHM7IH0KLm1hdHJpeC1saW5lOm50aC1jaGlsZCgzKSB7IGxlZnQ6IDYwJTsgYW5pbWF0aW9uLWRlbGF5OiAwLjhzOyB9Ci5tYXRyaXgtbGluZTpudGgtY2hpbGQoNCkgeyBsZWZ0OiA4MCU7IGFuaW1hdGlvbi1kZWxheTogMS4yczsgfQoubWF0cml4LWxpbmU6bnRoLWNoaWxkKDUpIHsgbGVmdDogMTAwJTsgYW5pbWF0aW9uLWRlbGF5OiAxLjZzOyB9CgovKiBDZW50cmFsIENvcmUgKi8KLmNlbnRyYWwtY29yZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgd2lkdGg6IDgwcHg7CiAgICBoZWlnaHQ6IDgwcHg7Cn0KCi5jb3JlLXJpbmcgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBhbmltYXRpb246IGNvcmVSb3RhdGUgM3MgbGluZWFyIGluZmluaXRlOwp9CgouY29yZS1yaW5nOm50aC1jaGlsZCgxKSB7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgIzRhOTBlMjsKICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICM0YTkwZTI7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDJzOwp9CgouY29yZS1yaW5nOm50aC1jaGlsZCgyKSB7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzAwZmY0MTsKICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzAwZmY0MTsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogM3M7CiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwp9CgouY29yZS1yaW5nOm50aC1jaGlsZCgzKSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmY2YjZiOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiA0czsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC43KTsKfQoKLmNvcmUtY2VudGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB3aWR0aDogMjBweDsKICAgIGhlaWdodDogMjBweDsKfQoKLnB1bHNlLWRvdCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICM0YTkwZTIgMCUsIHRyYW5zcGFyZW50IDcwJSk7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBhbmltYXRpb246IGNvcmVQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlOwp9CgovKiBEYXRhIFN0cmVhbXMgKi8KLmRhdGEtc3RyZWFtcyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCi5zdHJlYW0gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDFweDsKICAgIGhlaWdodDogNDBweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50IDAlLCAjNGE5MGUyIDUwJSwgdHJhbnNwYXJlbnQgMTAwJSk7CiAgICBhbmltYXRpb246IHN0cmVhbUZsb3cgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKfQoKLnN0cmVhbS0xIHsKICAgIHRvcDogMTAlOwogICAgbGVmdDogMTAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAwczsKICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKfQoKLnN0cmVhbS0yIHsKICAgIHRvcDogMTAlOwogICAgcmlnaHQ6IDEwJTsKICAgIGFuaW1hdGlvbi1kZWxheTogMC4zczsKICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7Cn0KCi5zdHJlYW0tMyB7CiAgICBib3R0b206IDEwJTsKICAgIGxlZnQ6IDEwJTsKICAgIGFuaW1hdGlvbi1kZWxheTogMC42czsKICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7Cn0KCi5zdHJlYW0tNCB7CiAgICBib3R0b206IDEwJTsKICAgIHJpZ2h0OiAxMCU7CiAgICBhbmltYXRpb24tZGVsYXk6IDAuOXM7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Cn0KCi8qIEdlb21ldHJpYyBQYXR0ZXJucyAqLwouZ2VvbWV0cmljLXBhdHRlcm5zIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouaGV4LXBhdHRlcm4gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDMwcHg7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjNGE5MGUyOwogICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgYW5pbWF0aW9uOiBoZXhGbG9hdCA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIG9wYWNpdHk6IDAuMzsKfQoKLmhleC1wYXR0ZXJuOm50aC1jaGlsZCgxKSB7CiAgICB0b3A6IDIwJTsKICAgIGxlZnQ6IDIwJTsKICAgIGFuaW1hdGlvbi1kZWxheTogMHM7Cn0KCi5oZXgtcGF0dGVybjpudGgtY2hpbGQoMikgewogICAgdG9wOiA2MCU7CiAgICByaWdodDogMjAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAxLjNzOwogICAgYm9yZGVyLWNvbG9yOiAjMDBmZjQxOwp9CgouaGV4LXBhdHRlcm46bnRoLWNoaWxkKDMpIHsKICAgIGJvdHRvbTogMjAlOwogICAgbGVmdDogNTAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAyLjZzOwogICAgYm9yZGVyLWNvbG9yOiAjZmY2YjZiOwp9Cgouc2FuZHBhY2std3JhcHBlci5sb2FkaW5nIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnNhbmRwYWNrLXdyYXBwZXIubG9hZGluZyAubG9hZGluZy1vdmVybGF5IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbmltYXRpb246IGxvYWRpbmdPdmVybGF5RmFkZUluIDAuNXMgZWFzZS1vdXQ7Cn0KCi5zYW5kcGFjay13cmFwcGVyLmxvYWRpbmcgLnNhbmRwYWNrLWNvbnRhaW5lciB7CiAgICBvcGFjaXR5OiAwLjI7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlOwp9CgoubG9hZGluZy1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIG9wYWNpdHk6IDAuOTU7CiAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgYW5pbWF0aW9uOiB0ZXh0RmFkZUluIDFzIGVhc2Utb3V0LCB0ZXh0QnJlYXRoIDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjhweDsKICAgIHRleHQtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgei1pbmRleDogMzsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmxvYWRpbmctc3Bpbm5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgei1pbmRleDogMzsKfQoKLmxvYWRpbmctc3Bpbm5lcjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgYm9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzRhOTBlMjsKICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkICM0YTkwZTI7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBhbmltYXRpb246IHNwaW5NYWluIDEuNHMgY3ViaWMtYmV6aWVyKDAuNjgsIC0wLjU1LCAwLjI2NSwgMS41NSkgaW5maW5pdGU7CiAgICBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLmxvYWRpbmctc3Bpbm5lcjo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDhweDsKICAgIGxlZnQ6IDhweDsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzM1N2FiZDsKICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzM1N2FiZDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGFuaW1hdGlvbjogc3BpblJldmVyc2UgMXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpIGluZmluaXRlOwogICAgb3BhY2l0eTogMC44Owp9CgoubG9hZGluZy1ib3ggLnBhcnRpY2xlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiA2cHg7CiAgICBoZWlnaHQ6IDZweDsKICAgIGJhY2tncm91bmQ6ICM0YTkwZTI7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBvcGFjaXR5OiAwLjc7CiAgICB6LWluZGV4OiAyOwp9Ci5sb2FkaW5nLWJveCAucGFydGljbGU6bnRoLWNoaWxkKDEpIHsgdG9wOiAxNSU7IGxlZnQ6IDEwJTsgYW5pbWF0aW9uOiBmbG9hdFBhcnRpY2xlMSA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfQoubG9hZGluZy1ib3ggLnBhcnRpY2xlOm50aC1jaGlsZCgyKSB7IHRvcDogMjAlOyByaWdodDogMTUlOyBhbmltYXRpb246IGZsb2F0UGFydGljbGUyIDMuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgMC41czsgYmFja2dyb3VuZDogIzM1N2FiZDsgfQoubG9hZGluZy1ib3ggLnBhcnRpY2xlOm50aC1jaGlsZCgzKSB7IGJvdHRvbTogMjUlOyBsZWZ0OiAyMCU7IGFuaW1hdGlvbjogZmxvYXRQYXJ0aWNsZTMgNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgMXM7IGJhY2tncm91bmQ6ICM1YmEzZjU7IH0KLmxvYWRpbmctYm94IC5wYXJ0aWNsZTpudGgtY2hpbGQoNCkgeyBib3R0b206IDMwJTsgcmlnaHQ6IDI1JTsgYW5pbWF0aW9uOiBmbG9hdFBhcnRpY2xlNCAzLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlIDEuNXM7IH0KCi8qIExvYWRpbmcgQW5pbWF0aW9ucyAqLwpAa2V5ZnJhbWVzIGxvYWRpbmdCb3hFbnRyYW5jZSB7CiAgICAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCkgc2NhbGUoMC44KSByb3RhdGVYKDE1ZGVnKTsgYm94LXNoYWRvdzogMCAwIDAgcmdiYSgwLCAwLCAwLCAwKTsgfQogICAgNTAlIHsgb3BhY2l0eTogMC44OyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgc2NhbGUoMS4wMikgcm90YXRlWCgwZGVnKTsgfQogICAgMTAwJSB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKSByb3RhdGVYKDBkZWcpOyBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKDAsIDAsIDAsIDAuNCk7IH0KfQpAa2V5ZnJhbWVzIGxvYWRpbmdCb3hQdWxzZSB7CiAgICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMTJweCA0OHB4IHJnYmEoMCwgMCwgMCwgMC40KSwgMCAwIDAgMXB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgICA1MCUgeyBib3gtc2hhZG93OiAwIDE2cHggNTZweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSksIDAgMCAwIDFweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsgdHJhbnNmb3JtOiBzY2FsZSgxLjAxKTsgfQp9CkBrZXlmcmFtZXMgbG9hZGluZ1NoaW1tZXIgeyAwJSB7IGxlZnQ6IC0xMDAlOyB9IDEwMCUgeyBsZWZ0OiAxMDAlOyB9IH0KQGtleWZyYW1lcyBsb2FkaW5nUHJvZ3Jlc3MgeyAwJSB7IHdpZHRoOiAwJTsgfSA1MCUgeyB3aWR0aDogNzAlOyB9IDEwMCUgeyB3aWR0aDogMTAwJTsgfSB9CkBrZXlmcmFtZXMgZ3JhZGllbnRNb3ZlIHsgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsgfSAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMjAwJSAwJTsgfSB9CkBrZXlmcmFtZXMgbG9hZGluZ092ZXJsYXlGYWRlSW4geyAwJSB7IG9wYWNpdHk6IDA7IGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpOyB9IDEwMCUgeyBvcGFjaXR5OiAxOyBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTVweCk7IH0gfQpAa2V5ZnJhbWVzIHRleHRGYWRlSW4geyAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNXB4KTsgdGV4dC1zaGFkb3c6IDAgMCAwIHJnYmEoMCwgMCwgMCwgMCk7IH0gMTAwJSB7IG9wYWNpdHk6IDAuOTU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgdGV4dC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMyk7IH0gfQpAa2V5ZnJhbWVzIHRleHRCcmVhdGggeyAwJSwgMTAwJSB7IG9wYWNpdHk6IDAuOTU7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0gNTAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTsgfSB9CkBrZXlmcmFtZXMgc3Bpbk1haW4gewogICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgxKTsgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7IH0KICAgIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykgc2NhbGUoMS4xKTsgYm94LXNoYWRvdzogMCAwIDMwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNSk7IH0KICAgIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHNjYWxlKDEpOyBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsgfQp9CkBrZXlmcmFtZXMgc3BpblJldmVyc2UgewogICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHNjYWxlKDAuOSk7IG9wYWNpdHk6IDAuODsgfQogICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKSBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfQogICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHNjYWxlKDAuOSk7IG9wYWNpdHk6IDAuODsgfQp9CgovKiBQYXJ0aWNsZSBmbG9hdGluZyBhbmltYXRpb25zICovCkBrZXlmcmFtZXMgZmxvYXRQYXJ0aWNsZTEgewogICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KSB0cmFuc2xhdGVYKDBweCk7IG9wYWNpdHk6IDAuNzsgfQogICAgMjUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KSB0cmFuc2xhdGVYKDVweCk7IG9wYWNpdHk6IDE7IH0KICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KSB0cmFuc2xhdGVYKC0zcHgpOyBvcGFjaXR5OiAwLjg7IH0KICAgIDc1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCkgdHJhbnNsYXRlWCg4cHgpOyBvcGFjaXR5OiAwLjk7IH0KfQoKQGtleWZyYW1lcyBmbG9hdFBhcnRpY2xlMiB7CiAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHRyYW5zbGF0ZVgoMHB4KTsgb3BhY2l0eTogMC43OyB9CiAgICAzMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgdHJhbnNsYXRlWCgtNHB4KTsgb3BhY2l0eTogMTsgfQogICAgNjAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMnB4KSB0cmFuc2xhdGVYKDZweCk7IG9wYWNpdHk6IDAuODsgfQogICAgOTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpIHRyYW5zbGF0ZVgoLTJweCk7IG9wYWNpdHk6IDAuOTsgfQp9CgpAa2V5ZnJhbWVzIGZsb2F0UGFydGljbGUzIHsKICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgdHJhbnNsYXRlWCgwcHgpOyBvcGFjaXR5OiAwLjc7IH0KICAgIDIwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNnB4KSB0cmFuc2xhdGVYKDdweCk7IG9wYWNpdHk6IDE7IH0KICAgIDQwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTRweCkgdHJhbnNsYXRlWCgtNXB4KTsgb3BhY2l0eTogMC44OyB9CiAgICA4MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgdHJhbnNsYXRlWCgzcHgpOyBvcGFjaXR5OiAwLjk7IH0KfQoKQGtleWZyYW1lcyBmbG9hdFBhcnRpY2xlNCB7CiAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHRyYW5zbGF0ZVgoMHB4KTsgb3BhY2l0eTogMC43OyB9CiAgICAzNSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTlweCkgdHJhbnNsYXRlWCgtNnB4KTsgb3BhY2l0eTogMTsgfQogICAgNzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03cHgpIHRyYW5zbGF0ZVgoNHB4KTsgb3BhY2l0eTogMC44OyB9CiAgICA4NSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTExcHgpIHRyYW5zbGF0ZVgoLTFweCk7IG9wYWNpdHk6IDAuOTsgfQp9Ci8qIEhpLXRlY2ggYW5pbWF0aW9uIGtleWZyYW1lcyAqLwpAa2V5ZnJhbWVzIG1hdHJpeFJhaW4gewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIDEwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDkwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIGNvcmVSb3RhdGUgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKQGtleWZyYW1lcyBjb3JlUHVsc2UgewogICAgMCUsIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEuNSk7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgfQp9CgpAa2V5ZnJhbWVzIHN0cmVhbUZsb3cgewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgaGV4RmxvYXQgewogICAgMCUsIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgfQogICAgMjUlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgfQogICAgNTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICB9CiAgICA3NSUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC0xNXB4KTsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICB9Cn0KCi8qIE5ldyBzdHlsZXMgZm9yIGFwcCBjb250YWluZXIgYW5kIFNhbmRwYWNrICovCi8qIEJhc2UgbGF5b3V0IChmb3Igc2NyZWVucyA+IDc2N3B4KSAqLwouYXBwLWNvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1pbi1oZWlnaHQ6IDYwMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC8qIEVuc3VyZSBmdWxsIGNvdmVyYWdlIGR1cmluZyBjb250ZW50IGdlbmVyYXRpb24gKi8KICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAtNDBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogLTgwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiA0MHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWJvdHRvbTogODBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogNDBweCAwIDgwcHggMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDEyMHB4KSAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgc2VhbWxlc3MgdHJhbnNpdGlvbiBkdXJpbmcgY29udGVudCBnZW5lcmF0aW9uICovCi5hcHAtY29udGFpbmVyW3N0eWxlKj0iZGlzcGxheTogZmxleCJdLAouYXBwLWNvbnRhaW5lcltzdHlsZSo9ImRpc3BsYXk6YmxvY2siXSB7CiAgICBtYXJnaW4tdG9wOiAtNDBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogLTgwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiA0MHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWJvdHRvbTogODBweCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxMjBweCkgIWltcG9ydGFudDsKfQoKLyogRW5zdXJlIGNoYXQgaW50ZXJmYWNlIGFsc28gaGFzIGZ1bGwgY292ZXJhZ2UgKi8KLmNoYXQtaW50ZXJmYWNlIHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLyogQWdncmVzc2l2ZSBTYW5kcGFjayBMYXlvdXQgRml4ZXMgLSBSZW1vdmUgYWxsIGVtcHR5IHNwYWNlICovCi5zYW5kcGFjay13cmFwcGVyIHsKICAgIHdpZHRoOiA3MCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9Cgouc2FuZHBhY2stY29udGFpbmVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3gtc2hhZG93OiBub25lOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgovKiBBZ2dyZXNzaXZlIFNhbmRwYWNrIGludGVybmFsIGxheW91dCBmaXhlcyAqLwouc3Atd3JhcHBlciB7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50Owp9Cgouc3AtbGF5b3V0IHsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICBnYXA6IDAgIWltcG9ydGFudDsKfQoKLnNwLWxheW91dCAuc3AtbGF5b3V0IHsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBnYXA6IDAgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIGFsbCBzcGFjaW5nIGZyb20gZWRpdG9yICovCi5zcC1lZGl0b3IgewogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGZsZXg6IDEgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50Owp9Cgouc3AtY29kZS1lZGl0b3IgewogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgc3BhY2luZyBmcm9tIGVkaXRvciBjb250ZW50ICovCi5zcC1lZGl0b3IgLnNwLWVkaXRvci1jb250ZW50LAouc3AtY29kZS1lZGl0b3IgLnNwLWVkaXRvci1jb250ZW50LAouc3AtZWRpdG9yIC5jbS1lZGl0b3IsCi5zcC1jb2RlLWVkaXRvciAuY20tZWRpdG9yIHsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBzcGFjaW5nIGZyb20gTW9uYWNvIGVkaXRvciAqLwoubW9uYWNvLWVkaXRvciB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKfQoKLm1vbmFjby1lZGl0b3IgLm1vbmFjby1lZGl0b3ItYmFja2dyb3VuZCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEFkZGl0aW9uYWwgYWdncmVzc2l2ZSBzcGFjaW5nIHJlbW92YWwgKi8KLnNwLXdyYXBwZXIsIC5zcC1sYXlvdXQsIC5zcC1sYXlvdXQgLnNwLWxheW91dCB7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgZ2FwOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50Owp9Cgouc3AtZWRpdG9yLCAuc3AtY29kZS1lZGl0b3IgewogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGZsZXg6IDEgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogVGFyZ2V0IFNhbmRwYWNrJ3MgaW50ZXJuYWwgc3RydWN0dXJlIG1vcmUgYWdncmVzc2l2ZWx5ICovCi5zcC13cmFwcGVyID4gZGl2LAouc3AtbGF5b3V0ID4gZGl2LAouc3AtbGF5b3V0IC5zcC1sYXlvdXQgPiBkaXYgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgc3BhY2luZyBmcm9tIFNhbmRwYWNrJ3MgZmlsZSB0YWJzIGFyZWEgKi8KLnNwLXRhYnMsCi5zcC10YWIsCi5zcC1maWxlLWxpc3QsCi5zcC1maWxlLWxpc3QtaXRlbSB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBzcGFjaW5nIGZyb20gU2FuZHBhY2sncyBlZGl0b3IgY29udGFpbmVyICovCi5zcC1lZGl0b3ItY29udGFpbmVyLAouc3AtY29kZS1lZGl0b3ItY29udGFpbmVyLAouc3AtZWRpdG9yLXdyYXBwZXIsCi5zcC1jb2RlLWVkaXRvci13cmFwcGVyIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50Owp9CgovKiBUYXJnZXQgQ29kZU1pcnJvciBzcGVjaWZpY2FsbHkgKi8KLmNtLWVkaXRvciwKLmNtLWVkaXRvciAuY20tc2Nyb2xsZXIsCi5jbS1lZGl0b3IgLmNtLWNvbnRlbnQsCi5jbS1lZGl0b3IgLmNtLWxpbmUgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50Owp9CgovKiBUYXJnZXQgTW9uYWNvIGVkaXRvciBzcGVjaWZpY2FsbHkgKi8KLm1vbmFjby1lZGl0b3IsCi5tb25hY28tZWRpdG9yIC5tb25hY28tZWRpdG9yLWJhY2tncm91bmQsCi5tb25hY28tZWRpdG9yIC52aWV3LWxpbmVzLAoubW9uYWNvLWVkaXRvciAudmlldy1saW5lIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoKLyogVWx0cmEtYWdncmVzc2l2ZSBzcGFjaW5nIHJlbW92YWwgZm9yIFNhbmRwYWNrICovCi5zYW5kcGFjay1jb250YWluZXIgKiB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBTcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBnYXAgYmV0d2VlbiB0YWJzIGFuZCBlZGl0b3IgKi8KLnNwLWxheW91dCA+IGRpdjpub3QoLnNwLXRhYnMpOm5vdCguc3AtdGFiKSB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBlZGl0b3IgdG8gc3RhcnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGFicyAqLwouc3AtZWRpdG9yLAouc3AtY29kZS1lZGl0b3IsCi5jbS1lZGl0b3IsCi5tb25hY28tZWRpdG9yIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgdG9wOiAwICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsKfQoKLyogRVhBQ1QgQ09QWSBmcm9tIHN0eWxlLmNzcyAtIFNhbmRwYWNrIGxheW91dCBmaXggKi8KLnNwLXdyYXBwZXIsCi5zcC1sYXlvdXQgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50Owp9Cgouc3AtbGF5b3V0IHsKICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCi5zYW5kcGFjay1jb250YWluZXIgKiB7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKfQoKLnNhbmRwYWNrLWNvbnRhaW5lcj4qIHsKICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgU2FuZHBhY2sgdGFicyB0byBiZSBob3Jpem9udGFsIC0gQUdHUkVTU0lWRSAqLwouc3AtdGFicywKLnNwLWZpbGUtbGlzdCwKW2NsYXNzKj0ic3AtdGFiIl0sCltjbGFzcyo9InNwLWZpbGUiXSwKLnNwLWxheW91dCA+IGRpdjpmaXJzdC1jaGlsZCwKLnNwLWxheW91dCA+IGRpdjpmaXJzdC1jaGlsZCA+IGRpdiB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgZ2FwOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50Owp9Cgouc3AtdGFiLAouc3AtZmlsZS1saXN0LWl0ZW0sCi5zcC1sYXlvdXQgPiBkaXY6Zmlyc3QtY2hpbGQgPiBkaXYgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBTaW1wbGUgZml4IGZvciBTYW5kcGFjayBzcGFjaW5nIC0gTEVTUyBBR0dSRVNTSVZFICovCi5zcC1sYXlvdXQgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLyogT25seSB0YXJnZXQgdGhlIHNwZWNpZmljIG5hdmlnYXRvciBlbGVtZW50ICovCi5zcC1jLWJ4ZVJSdC5zcC1jLWdNZmNucyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgZmlsZSB0YWJzIHRvIGhhdmUgbm8gYm90dG9tIHNwYWNpbmcgKi8KLnNwLXRhYnMsCi5zcC1maWxlLWxpc3QgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgZWRpdG9yIHRvIHN0aWNrIHRvIGZpbGUgdGFicyB3aXRoIG5vIGdhcCAqLwouc3AtbGF5b3V0ID4gZGl2Omxhc3QtY2hpbGQsCi5zcC1lZGl0b3IsCi5zcC1jb2RlLWVkaXRvciB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgZmxleDogMSAhaW1wb3J0YW50Owp9CgovKiBUYXJnZXQgdGhlIHNwZWNpZmljIGdhcCBiZXR3ZWVuIGZpbGUgbGlzdCBhbmQgZWRpdG9yICovCi5zcC1sYXlvdXQgPiBkaXY6bm90KC5zcC10YWJzKTpub3QoLnNwLWZpbGUtbGlzdCkgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50Owp9CgovKiBGaXggbGluZSBudW1iZXIgb2Zmc2V0IGlzc3VlICovCi5jbS1lZGl0b3IgLmNtLWd1dHRlcnMsCi5jbS1lZGl0b3IgLmNtLWxpbmVOdW1iZXJzLAoubW9uYWNvLWVkaXRvciAubWFyZ2luLAoubW9uYWNvLWVkaXRvciAubGluZS1udW1iZXJzIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgbGluZSBudW1iZXJzIHRvIGFsaWduIHdpdGggY29kZSAqLwouY20tZWRpdG9yIC5jbS1saW5lTnVtYmVycyAuY20tZ3V0dGVyRWxlbWVudCwKLm1vbmFjby1lZGl0b3IgLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXIgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYW55IG9mZnNldCBmcm9tIHRoZSBlZGl0b3IgY29udGVudCAqLwouY20tZWRpdG9yIC5jbS1jb250ZW50LAoubW9uYWNvLWVkaXRvciAudmlldy1saW5lcyB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIHRoZSBmaXJzdCBsaW5lIHRvIHN0YXJ0IGF0IHRoZSB0b3AgKi8KLmNtLWVkaXRvciAuY20tY29udGVudCAuY20tbGluZTpmaXJzdC1jaGlsZCwKLm1vbmFjby1lZGl0b3IgLnZpZXctbGluZXMgLnZpZXctbGluZTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBNb25hY28gZWRpdG9yIHRvIHN0YXJ0IGF0IHRoZSB2ZXJ5IHRvcCAqLwoubW9uYWNvLWVkaXRvciAudmlldy1saW5lcyB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50Owp9CgoubW9uYWNvLWVkaXRvciAudmlldy1saW5lIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5tb25hY28tZWRpdG9yIC52aWV3LWxpbmU6Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIGFueSBlbXB0eSBsaW5lcyBhdCB0aGUgc3RhcnQgb2YgY29kZSAqLwouY20tYWN0aXZlTGluZTpmaXJzdC1jaGlsZCwKLmNtLWxpbmU6Zmlyc3QtY2hpbGQgewogICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi8qIFRhcmdldCBTYW5kcGFjaydzIGNvZGUgd3JhcHBlciAqLwouc3AtY29kZS1lZGl0b3IsCi5zcC1lZGl0b3IgewogICAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgcGFkZGluZyBmcm9tIHRoZSBmaXJzdCBsaW5lIGNvbnRhaW5lciAqLwouY20tZWRpdG9yIC5jbS1jb250ZW50ID4gZGl2OmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEhpZGUgU2FuZHBhY2sgbmF2aWdhdG9yIGJhciBjb21wbGV0ZWx5IC0gRVhBQ1QgRklYIEZST00gaW5kZXguaHRtbCAqLwouc3AtYy1ieGVSUnQuc3AtYy1nTWZjbnMgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Cgouc3AtbmF2aWdhdG9yLAouc3AtbmF2aWdhdG9yLXdyYXBwZXIsCltjbGFzcyo9InNwLW5hdmlnYXRvciJdLApbY2xhc3MqPSJuYXZpZ2F0b3IiXSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBBTEwgbmVnYXRpdmUgbWFyZ2lucyAtIGZpbmQgdGhlIHJlYWwgaXNzdWUgKi8KLnNwLWxheW91dCA+IGRpdjpub3QoLnNwLXRhYnMpOm5vdCguc3AtZmlsZS1saXN0KSB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7CiAgICB6LWluZGV4OiAxMCAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSB0aGUgZWRpdG9yIGNvbnRlbnQgdG8gc3RhcnQgYXQgdGhlIHZlcnkgdG9wICovCi5zcC1lZGl0b3IgLmNtLWVkaXRvciwKLnNwLWNvZGUtZWRpdG9yIC5jbS1lZGl0b3IsCi5zcC1lZGl0b3IgLm1vbmFjby1lZGl0b3IsCi5zcC1jb2RlLWVkaXRvciAubW9uYWNvLWVkaXRvciB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7Cn0KLnNhbmRwYWNrLWNvbnRhaW5lciA+IGRpdjpub3QoaWZyYW1lKSB7IG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsgfQouc2FuZHBhY2stY29udGFpbmVyIGlmcmFtZSB7IG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IH0KCi8qIENoYXQgY29udGFpbmVyIHRha2VzIHJlbWFpbmluZyB3aWR0aCAqLwouY2hhdC1jb250YWluZXIgewogICAgZmxleDogMTsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jb2xvcik7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoOwogICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBGb3IgYWJzb2x1dGUgcG9zaXRpb25pbmcgb2YgaW5wdXQgc2VjdGlvbiBvbiBtb2JpbGUgKi8KfQoKLyogQ2hhdCBpbnB1dCBzZWN0aW9uIHN0eWxlcyAqLwouY2hhdC1pbnB1dC1zZWN0aW9uIHsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTBweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMik7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGJvdHRvbTogMDsKICAgIHotaW5kZXg6IDEwOwogICAgbWFyZ2luLXRvcDogYXV0bzsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5jaGF0LWlucHV0LXNlY3Rpb24ubG9hZGluZyB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5jaGF0LWlucHV0LXNlY3Rpb24gLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMDsKfQoKLmNoYXQtaW5wdXQtc2VjdGlvbiAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmNoYXQtcHJvbXB0LWlucHV0IHsKICAgIG1pbi1oZWlnaHQ6IDQ1cHg7CiAgICBtYXgtaGVpZ2h0OiAxMDBweDsKICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIHJlc2l6ZTogbm9uZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiBub25lOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBvdXRsaW5lOiBub25lOwp9CgouY2hhdC1wcm9tcHQtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7Cn0KCi5jaGF0LXN1Ym1pdC1idG4gewogICAgbWFyZ2luLXJpZ2h0OiA4cHggIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICM2YjczZmYpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogOHB4IDE2cHggIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDhweCAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMykgIWltcG9ydGFudDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgIWltcG9ydGFudDsKfQoKLmNoYXQtc3VibWl0LWJ0bjpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCkgIWltcG9ydGFudDsKfQoKLyogUXVhbGl0eSBTZWxlY3RvciBTdHlsZXMgKi8KLnF1YWxpdHktc2VsZWN0b3IgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tcmlnaHQ6IDhweDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi8qIERpc2FibGVkIHN0YXRlIHN0eWxlcyAqLwoucHJvbXB0LWlucHV0OmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50OwogICAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzKSAhaW1wb3J0YW50OwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSAhaW1wb3J0YW50OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5xdWFsaXR5LXNlbGVjdG9yOmRpc2FibGVkLAoucXVhbGl0eS1kcm9wZG93bjpkaXNhYmxlZCB7CiAgICBvcGFjaXR5OiAwLjYgIWltcG9ydGFudDsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHJnYmEoNTgsIDU0LCA1NCwgMC41KSAhaW1wb3J0YW50OwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSAhaW1wb3J0YW50OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5zdWJtaXQtYnRuOmRpc2FibGVkLAouZ2VuZXJhdGUtY29kZS1idG46ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42ICFpbXBvcnRhbnQ7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5zdWJtaXQtYnRuOmRpc2FibGVkOmhvdmVyLAouZ2VuZXJhdGUtY29kZS1idG46ZGlzYWJsZWQ6aG92ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMykgIWltcG9ydGFudDsKICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50Owp9CgoucXVhbGl0eS1kcm9wZG93biB7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgIGJhY2tncm91bmQ6ICMzYTM2MzY7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3V0bGluZTogbm9uZTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5xdWFsaXR5LWRyb3Bkb3duOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNSk7Cn0KCi5xdWFsaXR5LWRyb3Bkb3duOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNyk7CiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMjUpOwp9CgoucXVhbGl0eS10b29sdGlwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7Cn0KCi50b29sdGlwLWljb24gewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgb3BhY2l0eTogMC43OwogICAgY3Vyc29yOiBoZWxwOwogICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlOwp9CgoudG9vbHRpcC1jb250ZW50IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMTAwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC45NSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG9wYWNpdHk6IDA7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMsIHZpc2liaWxpdHkgMC4yczsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIHotaW5kZXg6IDEwMDsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjQpOwp9CgoucXVhbGl0eS10b29sdGlwOmhvdmVyIC50b29sdGlwLWNvbnRlbnQgewogICAgb3BhY2l0eTogMTsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7Cn0KCi8qIENoYXQgQnV0dG9ucyAqLwouY2hhdC1idXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJnKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0Owp9Ci5jaGF0LWJ1dHRvbjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKfQouZml4LWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9Ci5maXgtYnV0dG9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAi8J+UpyAiOwp9CgovKiBTYW5kcGFjayBWaWV3IFRvZ2dsZSAqLwoudmlldy10b2dnbGUtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlLWNvbG9yKTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIG1heC13aWR0aDogNDAwcHg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoudmlldy10b2dnbGUtYnRuIHsKICAgIGZsZXg6IDE7CiAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICBib3JkZXI6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tYmcpOwogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBmb250LXdlaWdodDogNTAwOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTA7Cn0KLnZpZXctdG9nZ2xlLWJ0bjpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1yaWdodDogbm9uZTsKfQoudmlldy10b2dnbGUtYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7Cn0KLnZpZXctdG9nZ2xlLWJ0bi5hY3RpdmUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZS1jb2xvcikgIWltcG9ydGFudDsKICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgb3BhY2l0eTogMSAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgaW5hY3RpdmUgYnV0dG9ucyBhcmUgY2xlYXJseSBkaWZmZXJlbnQgKi8KLnZpZXctdG9nZ2xlLWJ0bjpub3QoLmFjdGl2ZSkgewogICAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWJnKSAhaW1wb3J0YW50OwogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpICFpbXBvcnRhbnQ7CiAgICBvcGFjaXR5OiAwLjcgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgYWN0aXZlIHN0YXRlIHRvIGJlIHZpc2libGUgLSB1c2luZyBoYXJkY29kZWQgY29sb3JzICovCiNjb2RlVG9nZ2xlLmFjdGl2ZSwKI3ByZXZpZXdUb2dnbGUuYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAycHggc29saWQgIzRhOTBlMiAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBpbmFjdGl2ZSBzdGF0ZSB0byBiZSB2aXNpYmxlIC0gdXNpbmcgaGFyZGNvZGVkIGNvbG9ycyAqLwojY29kZVRvZ2dsZTpub3QoLmFjdGl2ZSksCiNwcmV2aWV3VG9nZ2xlOm5vdCguYWN0aXZlKSB7CiAgICBiYWNrZ3JvdW5kOiAjNDA0MDQwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAycHggc29saWQgIzQwNDA0MCAhaW1wb3J0YW50Owp9Ci5zYW5kcGFjay13cmFwcGVyIC5zYW5kcGFjay1jb250YWluZXIgewogICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0N3B4KTsgLyogU3VidHJhY3QgdG9nZ2xlIGJ1dHRvbiBoZWlnaHQgKi8KICAgIGZsZXg6IDE7Cn0KCi8qIFNhbmRwYWNrIEZpeGVzIC0gSGlkZSBkdXBsaWNhdGUgaW5wdXRzIGFuZCBmaXggcHJldmlldyAqLwouc3AtYy1ieGVSUnQuc3AtYy1nTWZjbnMgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KLnNwLXdyYXBwZXIsIC5zcC1sYXlvdXQgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfQouc3AtbGF5b3V0IHsgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9Ci5zYW5kcGFjay1jb250YWluZXIgKiB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsgfQouc2FuZHBhY2stY29udGFpbmVyID4gKiB7IHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsgfQoKLyogSGlkZSBBTEwgcG9zc2libGUgaW5wdXQgZWxlbWVudHMgaW4gU2FuZHBhY2sgKi8KLnNwLWNvbnNvbGUsIC5zcC1jb25zb2xlLXdyYXBwZXIsIC5zcC1jb25zb2xlLWNvbnRhaW5lciwKLnNwLXRlcm1pbmFsLCAuc3AtdGVybWluYWwtd3JhcHBlciwgLnNwLXRlcm1pbmFsLWNvbnRhaW5lciwKLnNwLWlucHV0LCAuc3AtaW5wdXQtd3JhcHBlciwgLnNwLWlucHV0LWNvbnRhaW5lciwKLnNwLXJ1bi1idXR0b24sIC5zcC1ydW4td3JhcHBlciwgLnNwLXJ1bi1jb250YWluZXIsCi5zcC1nZW5lcmF0ZS1idXR0b24sIC5zcC1nZW5lcmF0ZS13cmFwcGVyLCAuc3AtZ2VuZXJhdGUtY29udGFpbmVyLAouc3AtYnV0dG9uLCAuc3AtYnV0dG9uLXdyYXBwZXIsIC5zcC1idXR0b24tY29udGFpbmVyLAouc3AtYWN0aW9uLCAuc3AtYWN0aW9uLXdyYXBwZXIsIC5zcC1hY3Rpb24tY29udGFpbmVyLAouc3AtdG9vbGJhciwgLnNwLXRvb2xiYXItd3JhcHBlciwgLnNwLXRvb2xiYXItY29udGFpbmVyLAouc3AtY29udHJvbHMsIC5zcC1jb250cm9scy13cmFwcGVyLCAuc3AtY29udHJvbHMtY29udGFpbmVyLApbY2xhc3MqPSJzcC1jb25zb2xlIl0sIFtjbGFzcyo9InNwLXRlcm1pbmFsIl0sIFtjbGFzcyo9InNwLWlucHV0Il0sCltjbGFzcyo9InNwLXJ1biJdLCBbY2xhc3MqPSJzcC1nZW5lcmF0ZSJdLCBbY2xhc3MqPSJzcC1idXR0b24iXSwKW2NsYXNzKj0ic3AtYWN0aW9uIl0sIFtjbGFzcyo9InNwLXRvb2xiYXIiXSwgW2NsYXNzKj0ic3AtY29udHJvbHMiXSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIGhlaWdodDogMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgovKiBIaWRlIGFueSByZW1haW5pbmcgaW5wdXQgZWxlbWVudHMgKi8KLnNwLXdyYXBwZXIgaW5wdXRbdHlwZT0idGV4dCJdLAouc3Atd3JhcHBlciBpbnB1dFt0eXBlPSJ0ZXh0YXJlYSJdLAouc3Atd3JhcHBlciB0ZXh0YXJlYSwKLnNwLXdyYXBwZXIgLmlucHV0LWZpZWxkLAouc3Atd3JhcHBlciAucHJvbXB0LWlucHV0LAouc3Atd3JhcHBlciAuZ2VuZXJhdGUtaW5wdXQsCi5zcC13cmFwcGVyIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSwKLnNwLXdyYXBwZXIgLnN1Ym1pdC1idXR0b24sCi5zcC13cmFwcGVyIC5ydW4tYnV0dG9uLAouc3Atd3JhcHBlciAuZ2VuZXJhdGUtYnV0dG9uIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBhbGwgc3BhY2luZyBmcm9tIFNhbmRwYWNrIGVsZW1lbnRzICovCi5zcC13cmFwcGVyICogewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBnYXA6IDAgIWltcG9ydGFudDsKfQoKLnNwLWxheW91dCAqIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgZ2FwOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBubyBlbXB0eSBzcGFjZSBhYm92ZSBjb2RlICovCi5zcC1lZGl0b3IgLnNwLWVkaXRvci1jb250ZW50LAouc3AtY29kZS1lZGl0b3IgLnNwLWVkaXRvci1jb250ZW50IHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5zcC1lZGl0b3IgLmNtLWVkaXRvciwKLnNwLWNvZGUtZWRpdG9yIC5jbS1lZGl0b3IgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogU2FuZHBhY2sgUHJldmlldy9Db2RlIE1vZGUgVG9nZ2xpbmcgKi8KLnByZXZpZXctbW9kZSBbY2xhc3MqPSJzcC1jb2RlIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ic3AtZWRpdG9yIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ic3AtZmlsZSJdLAoucHJldmlldy1tb2RlIFtjbGFzcyo9InNwLXRhYiJdLAoucHJldmlldy1tb2RlIFtjbGFzcyo9ImVkaXRvciJdLAoucHJldmlldy1tb2RlIFtjbGFzcyo9ImNtLSJdLAoucHJldmlldy1tb2RlIFtjbGFzcyo9Im1vbmFjbyJdLAoucHJldmlldy1tb2RlIFtjbGFzcyo9InNwLWNvbnNvbGUiXSwKLnByZXZpZXctbW9kZSBbY2xhc3MqPSJzcC10ZXJtaW5hbCJdLAoucHJldmlldy1tb2RlIFtjbGFzcyo9InNwLWlucHV0Il0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5wcmV2aWV3LW1vZGUgaWZyYW1lLCAucHJldmlldy1tb2RlIFtjbGFzcyo9InByZXZpZXciXSB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHBvaW50ZXItZXZlbnRzOiBhbGwgIWltcG9ydGFudDsgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7IHotaW5kZXg6IDEgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiB3aGl0ZTsgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7Cn0KCi8qIENvZGUgbW9kZSAtIHNob3cgZWRpdG9yLCBoaWRlIHByZXZpZXcgKi8KLmNvZGUtbW9kZSBbY2xhc3MqPSJwcmV2aWV3Il0sCi5jb2RlLW1vZGUgaWZyYW1lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouY29kZS1tb2RlIFtjbGFzcyo9InNwLWNvZGUiXSwKLmNvZGUtbW9kZSBbY2xhc3MqPSJzcC1lZGl0b3IiXSwKLmNvZGUtbW9kZSBbY2xhc3MqPSJzcC1maWxlIl0sCi5jb2RlLW1vZGUgW2NsYXNzKj0ic3AtdGFiIl0sCi5jb2RlLW1vZGUgW2NsYXNzKj0iZWRpdG9yIl0sCi5jb2RlLW1vZGUgW2NsYXNzKj0iY20tIl0sCi5jb2RlLW1vZGUgW2NsYXNzKj0ibW9uYWNvIl0gewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgY29kZSBlZGl0b3IgdG8gc2hvdyBhY3R1YWwgY29kZSwgbm90IHByZXZpZXcgKi8KLnNhbmRwYWNrLWNvbnRhaW5lcjpub3QoLnByZXZpZXctbW9kZSkgW2NsYXNzKj0ic3AtbGF5b3V0Il0gewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50Owp9Ci5zYW5kcGFjay1jb250YWluZXI6bm90KC5wcmV2aWV3LW1vZGUpIFtjbGFzcyo9InNwLWVkaXRvciJdIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KLnNhbmRwYWNrLWNvbnRhaW5lcjpub3QoLnByZXZpZXctbW9kZSkgaWZyYW1lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoucHJldmlldy1tb2RlIFtjbGFzcyo9Im92ZXJsYXkiXSwgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJsb2FkaW5nIl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KLnByZXZpZXctbW9kZSBbY2xhc3MqPSJwcmV2aWV3Il0geyBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7IH0KLnByZXZpZXctbW9kZSBpZnJhbWUgeyBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50OyBtaW4taGVpZ2h0OiA1MDBweCAhaW1wb3J0YW50OyB9CgovKiBNaXNjICYgQW5pbWF0ZWQgRWxlbWVudHMgKi8KLmZpbGUtdXBkYXRlZCB7IGFuaW1hdGlvbjogZmlsZVVwZGF0ZSAxcyBlYXNlLWluLW91dDsgfQpAa2V5ZnJhbWVzIGZpbGVVcGRhdGUgeyAwJSB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOyB9IDUwJSB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOyB9IDEwMCUgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfSB9CgojdXNlckNvdW50IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyB9CiN1c2VyQ291bnQuY291bnRpbmcgeyBhbmltYXRpb246IGNvdW50UHVsc2UgMC4xcyBlYXNlLWluLW91dDsgfQpAa2V5ZnJhbWVzIGNvdW50UHVsc2UgeyAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0gNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsgfSAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSB9Ci5mbGV4LWxnZWdhIHsgZGlzcGxheTogZmxleDsgfQoKLyogTW9iaWxlIHZpZXcgdG9nZ2xlIGJ1dHRvbiAqLwoudG9nZ2xlLXZpZXctYnRuIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtY29sb3IpOwogICAgY29sb3I6IHdoaXRlOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci50b2dnbGUtdmlldy1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMzU3YWJkOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH0KLnRvZ2dsZS12aWV3LWJ0bjphY3RpdmUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTsgfQoKLyogTG92ZWQgYnkgRGV2ZWxvcGVycyBTZWN0aW9uICovCi5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24gewogICAgbWFyZ2luOiA2cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAycmVtICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLmxvdmVkLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5sb3ZlZC1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLyogVGVzdGltb25pYWwgQ29udGFpbmVyICovCi50ZXN0aW1vbmlhbC1jb250YWluZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWF4LXdpZHRoOiA4MDBweDsKICAgIG1hcmdpbjogMCBhdXRvIDRyZW07CiAgICBtaW4taGVpZ2h0OiA0MDBweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi50ZXN0aW1vbmlhbC1uYXYgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJsdWUtY29sb3IpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxLjJyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgei1pbmRleDogMTA7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLnRlc3RpbW9uaWFsLW5hdjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjM2E3YmM4OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEuMSk7CiAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjQpOwp9CgoudGVzdGltb25pYWwtbmF2LnByZXYtYnRuIHsKICAgIGxlZnQ6IC0yNXB4Owp9CgoudGVzdGltb25pYWwtbmF2Lm5leHQtYnRuIHsKICAgIHJpZ2h0OiAtMjVweDsKfQoKLyogVGVzdGltb25pYWwgQ2FyZCAqLwoudGVzdGltb25pYWwtY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCAzMCwgMzAsIDAuOSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMi41cmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi50ZXN0aW1vbmlhbC1jYXJkLmFjdGl2ZSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwp9CgoudGVzdGltb25pYWwtaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxcmVtOwogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwp9CgoudGVzdGltb25pYWwtYXZhdGFyIHsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoNDIsIDY1LCAyMzEsIDAuNCk7CiAgICBmbGV4LXNocmluazogMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnRlc3RpbW9uaWFsLWF2YXRhcjo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC0ycHg7CiAgICByaWdodDogLTJweDsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNnB4OwogICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMzAsIDMwLCAzMCwgMC45KTsKfQoKLmF2YXRhci1pbWcgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvYmplY3QtZml0OiBjb3ZlcjsKfQoKLnRlc3RpbW9uaWFsLXJhdGluZyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiAwLjJyZW07CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKfQoKLnN0YXIgewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBjb2xvcjogI0ZGRDcwMDsKfQoKLnRlc3RpbW9uaWFsLXF1b3RlIHsKICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICBtYXJnaW46IDAgMCAycmVtIDA7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgoudGVzdGltb25pYWwtYXV0aG9yIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi50ZXN0aW1vbmlhbC1hdXRob3ItbmFtZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKfQoKLnRlc3RpbW9uaWFsLWF1dGhvci10aXRsZSB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwp9CgoudGVzdGltb25pYWwtYXV0aG9yLWNvbXBhbnkgewogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpOwp9CgovKiBBdXRob3IgaW5mb3JtYXRpb24gc3R5bGluZyAqLwouYXV0aG9yLW5hbWUgewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW46IDA7Cn0KCi5hdXRob3Itcm9sZSB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbWFyZ2luOiAwOwp9CgouYXV0aG9yLWNvbXBhbnkgewogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpOwogICAgbWFyZ2luOiAwOwp9CgovKiBUZXN0aW1vbmlhbCBEb3RzICovCi50ZXN0aW1vbmlhbC1kb3RzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMC43NXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDRyZW07Cn0KCi50ZXN0aW1vbmlhbC1kb3RzIC5kb3QgewogICAgd2lkdGg6IDEwcHg7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgoudGVzdGltb25pYWwtZG90cyAuZG90LmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwp9CgoudGVzdGltb25pYWwtZG90cyAuZG90OmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNDIsIDY1LCAyMzEsIDAuNik7Cn0KCi8qIERldmVsb3BlciBTdGF0cyAqLwouZGV2ZWxvcGVyLXN0YXRzIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTsKICAgIGdhcDogMnJlbTsKICAgIG1hcmdpbjogNHJlbSAwOwogICAgbWF4LXdpZHRoOiA4MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9Cgouc3RhdHMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTsKICAgIGdhcDogMnJlbTsKICAgIG1hcmdpbi10b3A6IDNyZW07CiAgICBwYWRkaW5nLXRvcDogMnJlbTsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7Cn0KCi5zdGF0LWl0ZW0gewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgouc3RhdC1pdGVtLW9sZCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMXJlbTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogMS41cmVtOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLnN0YXQtaXRlbTpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwp9Cgouc3RhdC1pY29uIHsKICAgIHdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxLjJyZW07CiAgICBmbGV4LXNocmluazogMDsKfQoKLnN0YXQtY29udGVudCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLnN0YXQtbnVtYmVyIHsKICAgIGZvbnQtc2l6ZTogMi4ycmVtOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjMkE0MUU3OwogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwp9Cgouc3RhdC1sYWJlbCB7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBmb250LXdlaWdodDogNTAwOwp9CgovKiBSZWFkeSB0byBDb2RlIEZhc3RlciBTZWN0aW9uICovCi5yZWFkeS10by1jb2RlLXNlY3Rpb24gewogICAgbWFyZ2luOiA0cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogM3JlbSAycmVtICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpIDAlLCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4wNSkgNTAlLCByZ2JhKDAsIDAsIDAsIDAuMSkgMTAwJSk7CiAgICBib3JkZXItcmFkaXVzOiAyNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoucmVhZHktdG8tY29kZS1zZWN0aW9uOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAwJSwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMTUpIDAlLCB0cmFuc3BhcmVudCA1MCUpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5jdGEtdGl0bGUgewogICAgZm9udC1zaXplOiAzcmVtOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMXJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLmN0YS1pY29uIHsKICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKfQoKLmN0YS1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5mZWF0dXJlcy1jaGVja2xpc3QgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7CiAgICBnYXA6IDEuNXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLmZlYXR1cmUtaXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMC43NXJlbTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBwYWRkaW5nOiAwLjc1cmVtIDA7Cn0KCi5mZWF0dXJlLWNoZWNrIHsKICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi5mZWF0dXJlLXRleHQgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKfQoKLmN0YS1idXR0b25zIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDFyZW07CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgZmxleC13cmFwOiB3cmFwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLmN0YS1wcmltYXJ5LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgY29sb3I6IHdoaXRlOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgIHBhZGRpbmc6IDFyZW0gMnJlbTsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMC41cmVtOwogICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLmN0YS1wcmltYXJ5LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjM2E3YmM4OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgYm94LXNoYWRvdzogMCAxMnB4IDM1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7Cn0KCi5jdGEtc2Vjb25kYXJ5LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMXJlbSAycmVtOwogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKfQoKLmN0YS1zZWNvbmRhcnktYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgY29sb3I6IHdoaXRlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwp9CgoudHJ1c3RlZC1ieSB7CiAgICBtYXJnaW4tdG9wOiA0cmVtOwogICAgcGFkZGluZy10b3A6IDNyZW07CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9CgoudHJ1c3RlZC1ieS10ZXh0IHsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKfQoKLmNvbXBhbnktbG9nb3MgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMnJlbTsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIG9wYWNpdHk6IDAuNzsKfQoKLmNvbXBhbnktbG9nbyB7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi5jb21wYW55LWxvZ286aG92ZXIgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9CgouY29tcGFueS1uYW1lIHsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmNvbXBhbnktbmFtZTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7Cn0KCi8qIFBvd2VyZWQgYnkgV3JpdGVjcmVhbSBzdHlsaW5nIC0gWWVsbG93IGdyYWRpZW50IGFuaW1hdGlvbiAqLwoud3JpdGVjcmVhbS1oaWdobGlnaHQgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjRkZENzAwLCAjRkZBNTAwLCAjRkZENzAwLCAjRkZGRjAwLCAjRkZENzAwKTsKICAgIGJhY2tncm91bmQtc2l6ZTogNDAwJSA0MDAlOwogICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBhbmltYXRpb246IHllbGxvd0dyYWRpZW50RmxvdyAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCkBrZXlmcmFtZXMgeWVsbG93R3JhZGllbnRGbG93IHsKICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9CiAgICAyNSUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDUwJTsgfQogICAgNTAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlOyB9CiAgICA3NSUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAxMDAlOyB9CiAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9Cn0KCiN1c2VyQ291bnQgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOyAvKiBCbHVlIGNvbG9yIGZvciB0aGUgdXNlciBjb3VudCAqLwogICAgZm9udC13ZWlnaHQ6IDcwMDsKfQoKLyogRGVza3RvcCB2aWV3ICg+PSA3NjhweCkgKi8KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgICAgICAgLyogaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCkgIWltcG9ydGFudDsgKi8KICAgICAgICBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuY2hhdC1pbnRlcmZhY2UgewogICAgICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IDkwJSAhaW1wb3J0YW50OwogICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICAgIG9yZGVyOiBpbml0aWFsICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuc2FuZHBhY2std3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIG9yZGVyOiBpbml0aWFsICFpbXBvcnRhbnQ7CiAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgfQoKfQoKLyogVGFibGV0IGFuZCBzbWFsbGVyICg8PSA3NjdweCkgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAuY29udGFpbmVyIHsgbWF4LXdpZHRoOiA5NXZ3OyB9CiAgICAuaGVyby10aXRsZSB7IGZvbnQtc2l6ZTogMnJlbTsgfQogICAgLmhlcm8tc3VidGl0bGUgeyBmb250LXNpemU6IDEuMXJlbTsgfQogICAgLmZlYXR1cmVzLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgZ2FwOiAxLjVyZW07IH0KICAgIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLCAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLCAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7IG1hcmdpbjogNHJlbSBhdXRvIDNyZW07IHBhZGRpbmc6IDAgMXJlbTsgfQogICAgLmhvdy1pdC13b3Jrcy10aXRsZSwgLmVuZGxlc3MtdGl0bGUsIC5hY3Rpb24tdGl0bGUsIC5sb3ZlZC10aXRsZSB7IGZvbnQtc2l6ZTogMnJlbTsgfQogICAgLnN0ZXBzLWNvbnRhaW5lciB7IAogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgCiAgICAgICAgZ2FwOiAxcmVtICFpbXBvcnRhbnQ7IAogICAgICAgIHBhZGRpbmc6IDAgMC41cmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuc3RlcC1hcnJvdyB7IHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKSAhaW1wb3J0YW50OyB9CiAgICAuc3RlcC1jYXJkIHsgCiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IAogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IAogICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDEuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAucG9zc2liaWxpdGllcy1ncmlkLCAuY2FwYWJpbGl0aWVzLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgZ2FwOiAxLjVyZW07IH0KICAgIC5wb3B1bGFyLXByb21wdHMtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9CiAgICAuZGVtby10YWJzIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWF4LXdpZHRoOiAyMDBweDsgfQogICAgLmRlbW8tdGFiIHsgd2lkdGg6IDEwMCU7IH0KICAgIC5tb3JlLXRpdGxlLCAuY3RhLXRpdGxlIHsgZm9udC1zaXplOiAyLjJyZW07IH0KICAgIC50ZXN0aW1vbmlhbC1jb250YWluZXIgeyAKICAgICAgICBtaW4taGVpZ2h0OiAzNTBweDsgCiAgICAgICAgcGFkZGluZzogMCAxcmVtOyAKICAgICAgICBtYXJnaW46IDAgYXV0byAycmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtbmF2IHsgCiAgICAgICAgd2lkdGg6IDQwcHg7IAogICAgICAgIGhlaWdodDogNDBweDsgCiAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtbmF2LnByZXYtYnRuIHsKICAgICAgICBsZWZ0OiAxMHB4OwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtbmF2Lm5leHQtYnRuIHsKICAgICAgICByaWdodDogMTBweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWNhcmQgewogICAgICAgIHBhZGRpbmc6IDEuNXJlbTsKICAgICAgICBtYXJnaW46IDAgMTBweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWhlYWRlciB7IAogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IAogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgCiAgICAgICAgZ2FwOiAwLjVyZW07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF2YXRhciB7CiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtcmF0aW5nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLXF1b3RlIHsgCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyAKICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtYXV0aG9yIHsgCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyAKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWRvdHMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICB9CiAgICAKICAgIC8qIEFkZGl0aW9uYWwgbW9iaWxlIHRlc3RpbW9uaWFsIGltcHJvdmVtZW50cyAqLwogICAgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiB7CiAgICAgICAgcGFkZGluZzogMnJlbSAxcmVtOwogICAgfQogICAgCiAgICAubG92ZWQtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgfQogICAgCiAgICAubG92ZWQtc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgfQogICAgLnN0YXRzLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgZ2FwOiAycmVtOyB9CiAgICAuZmVhdHVyZXMtY2hlY2tsaXN0IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0KICAgIC5jdGEtYnV0dG9ucyB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KICAgIC5jdGEtcHJpbWFyeS1idG4sIC5jdGEtc2Vjb25kYXJ5LWJ0biB7IHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDI4MHB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQogICAgLmZvb3RlciB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTBweDsgcGFkZGluZzogMXJlbSAwLjVyZW07IH0KCiAgICAvKiBNYWluIEFwcCBMYXlvdXQgZm9yIE1vYmlsZSAqLwogICAgLmFwcC1jb250YWluZXIgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4OwogICAgfQogICAgLmNoYXQtaW50ZXJmYWNlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgfQogICAgLnNhbmRwYWNrLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpOwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAvKiBIZWFkZXIgTW9iaWxlIFJlc3BvbnNpdmUgU3R5bGVzICovCiAgICAuaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDAgIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgCiAgICAubG9nby1ncm91cCB7CiAgICAgICAgcGFkZGluZzogNXB4IDhweCAhaW1wb3J0YW50OwogICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgIH0KICAgIAogICAgLmxvZ28taWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxLjFyZW0gIWltcG9ydGFudDsKICAgICAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgfQogICAgCiAgICAubG9nby10ZXh0IHsKICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB9CiAgICAKICAgIC5oZWFkZXItcmlnaHQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogNHB4IDZweCAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgfQogICAgCiAgICAudG9nZ2xlLXZpZXctYnRuIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1zaXplOiAxMXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiA5MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgfQogICAgCiAgICAuZG93bmxvYWQtYnRuLAogICAgLmRlcGxveS1uZXRsaWZ5LWJ0biwKICAgIC5zZXQtdG9rZW4tYnRuIHsKICAgICAgICBwYWRkaW5nOiA2cHggOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1zaXplOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWluLXdpZHRoOiAzMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDMycHggIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IDMycHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICBnYXA6IDAgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmRvd25sb2FkLWJ0biBzcGFuOm5vdCguZG93bmxvYWQtaWNvbiksCiAgICAuZGVwbG95LW5ldGxpZnktYnRuIHNwYW46bm90KC5kZXBsb3ktaWNvbiksCiAgICAuc2V0LXRva2VuLWJ0biBzcGFuOm5vdCguc2V0LXRva2VuLWljb24pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5kb3dubG9hZC1pY29uLAogICAgLmRlcGxveS1pY29uLAogICAgLnNldC10b2tlbi1pY29uIHsKICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmRvd25sb2FkLWljb24gc3ZnLAogICAgLmRlcGxveS1pY29uIHN2ZywKICAgIC5zZXQtdG9rZW4taWNvbiBzdmcgewogICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5naXRodWItYnRuIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEVuc3VyZSBoZWFkZXIgZG9lc24ndCBvdmVyZmxvdyBvbiBtb2JpbGUgd2hlbiBhcHAgaXMgYWN0aXZlICovCiAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlciB7CiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBQcmV2ZW50IGhvcml6b250YWwgb3ZlcmZsb3cgb24gbW9iaWxlICovCiAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlci1mbGV4IHsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICB9CiAgICAKICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDEyMHB4KTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogICAgLmNoYXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDhweDsKICAgIH0KICAgIC5jaGF0LW1lc3NhZ2VzIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDcwcHgpOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgfQogICAgLmNoYXQtaW5wdXQtc2VjdGlvbiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGJvdHRvbTogMDsgbGVmdDogMDsgcmlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogMTAwOwogICAgfQogICAgLnZpZXctdG9nZ2xlLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogICAgfQp9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGhlYWRlci1mbGV4Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28tZ3JvdXAiIG9uY2xpY2s9ImdvVG9Ib21lcGFnZSgpIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvLWljb24iPjwvPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvLXRleHQiPkhSICYgSm9iIEJvYXJkPC9zcGFuPiAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1yaWdodCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJkZXBsb3lCdG4iIGNsYXNzPSJkZXBsb3ktbmV0bGlmeS1idG4iIHRpdGxlPSJEZXBsb3kgdG8gTmV0bGlmeSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IgogICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9ImRlcGxveVRvTmV0bGlmeSgpIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGVwbG95LWljb24iIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0ibTI4MC0yODAgMjAwLTIwMCAyMDAgMjAwSDI4MFptMjAwLTI0MEwyODAtNzIwaDQwMEw0ODAtNTIwWiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+RGVwbG95IHRvIE5ldGxpZnk8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9InNldE5ldGxpZnlUb2tlbkJ0biIgY2xhc3M9InNldC10b2tlbi1idG4iIHRpdGxlPSJTZXQgTmV0bGlmeSBUb2tlbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBvbmNsaWNrPSJzaG93TmV0bGlmeVRva2VuTW9kYWwoKSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNldC10b2tlbi1pY29uIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQ0MC0yODBoODB2LTE2MGgxNjB2LTgwSDUyMHYtMTYwaC04MHYxNjBIMjgwdjgwaDE2MHYxNjBabTQwIDIwMHEtODIgMC0xNTUtMzEuNXQtMTI3LjUtODZRMTQzLTI1NSAxMTEuNS0zMjhUODAtNDgwcTAtODMgMzEuNS0xNTZ0ODYtMTI3UTI1Mi04MTcgMzI1LTg0OC41VDQ4MC04ODBxODMgMCAxNTYgMzEuNVQ3NjMtNzYzcTU0IDU0IDg1LjUgMTI3VDg4MC00ODBxMCA4Mi0zMS41IDE1NVQ3NjMtMTk3LjVxLTU0IDU0LjUtMTI3IDg2VDQ4MC04MFptMC04MHExMzQgMCAyMjctOTN0OTMtMjI3cTAtMTM0LTkzLTIyN3QtMjI3LTkzcS0xMzQgMC0yMjcgOTN0LTkzIDIyN3EwIDEzNCA5MyAyMjd0MjI3IDkzWm0wLTMyMFoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPlNldCBUb2tlbjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGlkPSJuZXdDaGF0QnRuIiBjbGFzcz0ibmV3LWNoYXQtYnRuIiB0aXRsZT0iU3RhcnQgTmV3IENoYXQiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIKICAgICAgICAgICAgICAgICAgICBvbmNsaWNrPSJzdGFydE5ld0NoYXQoKSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5ldy1jaGF0LWljb24iIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgd2lkdGg9IjIwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQ0MC00NDBIMjAwdi04MGgyNDB2LTI0MGg4MHYyNDBoMjQwdjgwSDUyMHYyNDBoLTgwdi0yNDBaIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5OZXcgQ2hhdDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9InRvZ2dsZVZpZXdCdG4iIGNsYXNzPSJ0b2dnbGUtdmlldy1idG4iPlN3aXRjaCB0byBQcmV2aWV3PC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkb3dubG9hZC1idG4iIGlkPSJkb3dubG9hZEJ0biIgdGl0bGU9IkRvd25sb2FkIENvZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIKICAgICAgICAgICAgICAgICAgICBvbmNsaWNrPSJkb3dubG9hZENvZGUoKSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRvd25sb2FkLWljb24iIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgd2lkdGg9IjI0cHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJ3aGl0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Im00ODAtMjQwIDE2MC0xNjAtNTYtNTYtNjQgNjR2LTE2OGgtODB2MTY4bC02NC02NC01NiA1NiAxNjAgMTYwWk0yMDAtNjQwdjQ0MGg1NjB2LTQ0MEgyMDBabTAgNTIwcS0zMyAwLTU2LjUtMjMuNVQxMjAtMjAwdi00OTlxMC0xNCA0LjUtMjd0MTMuNS0yNGw1MC02MXExMS0xNCAyNy41LTIxLjVUMjUwLTg0MGg0NjBxMTggMCAzNC41IDcuNVQ3NzItODExbDUwIDYxcTkgMTEgMTMuNSAyNHQ0LjUgMjd2NDk5cTAgMzMtMjMuNSA1Ni41VDc2MC0xMjBIMjAwWm0xNi02MDBoNTI4bC0zNC00MEgyNTBsLTM0IDQwWm0yNjQgMzAwWiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZ2l0aHViLWJ0biIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPiAgCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9oZWFkZXI+CgogICAgPCEtLSBMYW5kaW5nIGNvbnRlbnQgdGhhdCB3aWxsIGJlIGhpZGRlbiBhZnRlciBjaGF0IHN0YXJ0cyAtLT4KICAgIDxkaXYgaWQ9ImxhbmRpbmdTZWN0aW9uIj4KICAgICAgICA8YSBocmVmPSIjIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvd2VyZWQtcGlsbCI+CiAgICAgICAgICAgICAgICA8c3Bhbj5GaW5kIHlvdXIgbmV4dCByb2xlIOKAlCBicm93c2UgdGhvdXNhbmRzIG9mIGpvYnMgYW5kIGVtcGxveWVyIHByb2ZpbGVzLjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9hPgoKICAgICAgICA8bWFpbiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPCEtLSBOZXcgSGVybyBTZWN0aW9uIG1hdGNoaW5nIEZpZ21hIGRlc2lnbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imluc2lkZS1oZXJvLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhlcm8taWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50MS5wbmciIGFsdD0iQUkgQ29kZSBBc3Npc3RhbnQgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9Imhlcm8tdGl0bGUgIj5IUiAmIEpvYiBCb2FyZDwvaDE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0iaGVyby10aXRsZSI+RmluZCBUYWxlbnQuIEZpbmQgV29yay48L2gxPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9Imhlcm8tc3VidGl0bGUiPgogICAgICAgICAgICAgICAgICAgIENvbm5lY3QgZW1wbG95ZXJzIHdpdGggcXVhbGlmaWVkIGNhbmRpZGF0ZXMsIGJyb3dzZSBvcGVuIHJvbGVzLCBhbmQgbWFuYWdlIGFwcGxpY2F0aW9ucyBlZmZvcnRsZXNzbHkuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iaGVyby1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgU2VhcmNoIHRob3VzYW5kcyBvZiBqb2IgbGlzdGluZ3MsIGV4cGxvcmUgY29tcGFueSBwcm9maWxlcywgYW5kIGFwcGx5IHRvIHBvc2l0aW9ucyDigJQgYWxsIGluIG9uZSBwbGF0Zm9ybS4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEtlZXAgZXhpc3RpbmcgaW5wdXQgc2VjdGlvbiB1bmNoYW5nZWQgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LW91dGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1pbm5lci1jb250YWluZXIgdmVydGljYWwiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0icHJvbXB0LWlucHV0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIGpvYnMsIGNvbXBhbmllcywgb3Igc2tpbGxzIChlLmcuICdGcm9udGVuZCBFbmdpbmVlcicsICdSZW1vdGUgVVggRGVzaWduZXInKSIgcm93cz0iMSI+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1jb250cm9scy1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9ImF0dGFjaC1idG4gc3F1YXJlIiB0aXRsZT0iQXR0YWNoIj48c3Bhbj7wn5OOPC9zcGFuPjwvYnV0dG9uPiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVhbGl0eS1zZWxlY3RvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJxdWFsaXR5U2VsZWN0TGFuZGluZyIgY2xhc3M9InF1YWxpdHktZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InN0YW5kYXJkIj5TUSA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJoaWdoZXIiPkhRPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InF1YWxpdHktdG9vbHRpcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvb2x0aXAtaWNvbiI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNpcmNsZS1pbmZvIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2x0aXAtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+U1E6PC9zdHJvbmc+IFF1aWNrIGdlbmVyYXRpb24gd2l0aCBnb29kIHF1YWxpdHk8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+SFE6PC9zdHJvbmc+IFNsb3cgZ2VuZXJhdGlvbiB3aXRoIGhpZ2ggcXVhbGl0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzdWJtaXQtYnRuIGdlbmVyYXRlLWNvZGUtYnRuIiB0aXRsZT0iU3VibWl0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNlYXJjaCBKb2JzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWljay1hcHBzIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFwcC1idG4iPkpvYiBTZWFyY2g8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFwcC1idG4iPlBvc3QgYSBKb2I8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFwcC1idG4iPkVtcGxveWVyczwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYXBwLWJ0biI+Q2FyZWVyIFJlc291cmNlczwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYXBwLWJ0biI+U2FsYXJ5IEluc2lnaHRzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hcHAtYnRuIj5IaXJpbmcgRXZlbnRzPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8IS0tIE5ldyBGZWF0dXJlIENhcmRzIFNlY3Rpb24gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzLWdyaWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDIucG5nIiBhbHQ9Ik11bHRpLUxhbmd1YWdlIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJmZWF0dXJlLXRpdGxlIj5GZWF0dXJlZCBKb2JzPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZmVhdHVyZS1kZXNjcmlwdGlvbiI+QnJvd3NlIGN1cmF0ZWQgam9iIGxpc3RpbmdzIGZyb20gdG9wIGVtcGxveWVycyBhY3Jvc3MgaW5kdXN0cmllcy48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQ1LnBuZyIgYWx0PSJJbnN0YW50IFJlc3VsdHMgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImZlYXR1cmUtdGl0bGUiPkNvbXBhbnkgUHJvZmlsZXM8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJmZWF0dXJlLWRlc2NyaXB0aW9uIj5FeHBsb3JlIGVtcGxveWVyIHBhZ2VzIHdpdGggb3BlbmluZ3MsIGN1bHR1cmUgbm90ZXMsIGFuZCBoaXJpbmcgdGVhbXMuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50Ni5wbmciIGFsdD0iU21hcnQgQ29udGV4dCBJY29uIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iZmVhdHVyZS10aXRsZSI+Q2FyZWVyIEZhaXJzICYgRXZlbnRzPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZmVhdHVyZS1kZXNjcmlwdGlvbiI+RmluZCB1cGNvbWluZyBoaXJpbmcgZXZlbnRzLCB2aXJ0dWFsIGZhaXJzLCBhbmQgaW50ZXJ2aWV3IGRheXMuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBLZWVwIGV4aXN0aW5nIHF1aWNrIGFwcHMgYnV0IHN0eWxlIHRoZW0gYmV0dGVyIC0tPgoKICAgICAgICAgICAgPCEtLSBIb3cgSXQgV29ya3MgU2VjdGlvbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG93LWl0LXdvcmtzLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJob3ctaXQtd29ya3MtdGl0bGUiPkhvdyBpdCBXb3JrczwvaDI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iaG93LWl0LXdvcmtzLXN1YnRpdGxlIj5GaW5kIHdvcmsgb3IgaGlyZSBpbiB0aHJlZSBzaW1wbGUgc3RlcHM8L3A+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcHMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLW51bWJlciI+MDE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50Ny5wbmciIGFsdD0iRW50ZXIgUHJvbXB0IEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InN0ZXAtdGl0bGUiPlNlYXJjaCAmIFNhdmUgSm9iczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJzdGVwLWRlc2NyaXB0aW9uIj5Ccm93c2Ugb3BlbmluZ3MsIGZpbHRlciBieSBsb2NhdGlvbiBhbmQgc2tpbGxzLCBhbmQgc2F2ZSByb2xlcyB5b3Ugd2FudCB0byBhcHBseSB0by48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtYXJyb3ciPuKGkjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLW51bWJlciI+MDI8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50OC5wbmciIGFsdD0iQUkgUHJvY2Vzc2VzIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InN0ZXAtdGl0bGUiPkFwcGx5ICYgSW50ZXJ2aWV3PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InN0ZXAtZGVzY3JpcHRpb24iPlN1Ym1pdCBhcHBsaWNhdGlvbnMsIHNjaGVkdWxlIGludGVydmlld3MsIGFuZCB0cmFjayB5b3VyIHByb2dyZXNzIHdpdGggZW1wbG95ZXJzLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1hcnJvdyI+4oaSPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtbnVtYmVyIj4wMzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQ5LnBuZyIgYWx0PSJHZXQgWW91ciBDb2RlIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InN0ZXAtdGl0bGUiPkdldCBIaXJlZCAmIENvbm5lY3Q8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ic3RlcC1kZXNjcmlwdGlvbiI+Q29ubmVjdCB3aXRoIHJlY3J1aXRlcnMsIGFjY2VwdCBvZmZlcnMsIGFuZCBncm93IHlvdXIgcHJvZmVzc2lvbmFsIG5ldHdvcmsuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gRW5kbGVzcyBQb3NzaWJpbGl0aWVzIFNlY3Rpb24gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZW5kbGVzcy10aXRsZSI+Sm9iIENhdGVnb3JpZXM8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVuZGxlc3Mtc3VidGl0bGUiPkJyb3dzZSByb2xlcyBhbmQgY2F0ZWdvcmllcyB0YWlsb3JlZCBmb3IgZW5naW5lZXJpbmcsIHByb2R1Y3QsIGRlc2lnbiwgYW5kIGJ1c2luZXNzIHRlYW1zPC9wPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvc3NpYmlsaXRpZXMtZ3JpZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zc2liaWxpdHktY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvc3NpYmlsaXR5LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQxMC5wbmciIGFsdD0iV2ViIERldmVsb3BtZW50IEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InBvc3NpYmlsaXR5LXRpdGxlIj5FbmdpbmVlcmluZzwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiI+RnJvbnRlbmQsIGJhY2tlbmQsIERldk9wcywgYW5kIGZ1bGwtc3RhY2sgZW5naW5lZXJpbmcgcm9sZXMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3NzaWJpbGl0eS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zc2liaWxpdHktaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDEyLnBuZyIgYWx0PSJNb2JpbGUgQXBwcyBJY29uIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwb3NzaWJpbGl0eS10aXRsZSI+UHJvZHVjdCAmIERlc2lnbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiI+UHJvZHVjdCBtYW5hZ2VtZW50LCBVWC9VSSBkZXNpZ24sIGFuZCBkZXNpZ24gbGVhZGVyc2hpcCBwb3NpdGlvbnMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3NzaWJpbGl0eS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zc2liaWxpdHktaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDEzLnBuZyIgYWx0PSJEYXRhIFNjaWVuY2UgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icG9zc2liaWxpdHktdGl0bGUiPkJ1c2luZXNzICYgU3RyYXRlZ3k8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icG9zc2liaWxpdHktZGVzY3JpcHRpb24iPlJvbGVzIGluIGdyb3d0aCwgYW5hbHl0aWNzLCBzYWxlcywgbWFya2V0aW5nLCBhbmQgb3BlcmF0aW9ucy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvc3NpYmlsaXR5LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3NzaWJpbGl0eS1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50MTYucG5nIiBhbHQ9IlVJL1VYIERlc2lnbiBJY29uIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwb3NzaWJpbGl0eS10aXRsZSI+U3RhcnR1cHMgJiBIaXJpbmc8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icG9zc2liaWxpdHktZGVzY3JpcHRpb24iPlN0YXJ0dXAgaGlyaW5nLCBlYXJseS1zdGFnZSByb2xlcywgYW5kIGludmVzdG9yLWJhY2tlZCBvcHBvcnR1bml0aWVzLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3B1bGFyLXByb21wdHMtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwb3B1bGFyLXByb21wdHMtdGl0bGUiPkZlYXR1cmVkIFNwZWFrZXJzICYgVGFsa3M8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3B1bGFyLXByb21wdHMtZ3JpZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwb3B1bGFyLXByb21wdC1idG4iPlNlbmlvciBGcm9udGVuZCBFbmdpbmVlciDigJQgUmVtb3RlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwb3B1bGFyLXByb21wdC1idG4iPlByb2R1Y3QgTWFuYWdlciDigJQgTmV3IFlvcmssIE5ZPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwb3B1bGFyLXByb21wdC1idG4iPlVYIERlc2lnbmVyIOKAlCBDb250cmFjdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icG9wdWxhci1wcm9tcHQtYnRuIj5EYXRhIFNjaWVudGlzdCDigJQgTWFjaGluZSBMZWFybmluZzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icG9wdWxhci1wcm9tcHQtYnRuIj5TYWxlcyBFeGVjdXRpdmUg4oCUIEVNRUE8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InBvcHVsYXItcHJvbXB0LWJ0biI+Q3VzdG9tZXIgU3VjY2VzcyBNYW5hZ2VyPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBTZWUgSXQgSW4gQWN0aW9uIFNlY3Rpb24gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiI+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImFjdGlvbi10aXRsZSI+U2VlIExpc3RpbmdzPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhY3Rpb24tc3VidGl0bGUiPlByZXZpZXcgb3BlbiByb2xlcywgY29tcGFueSBoaWdobGlnaHRzLCBhbmQgY2FuZGlkYXRlIHByb2ZpbGVzPC9wPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tdGFicyI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVtby10YWIgYWN0aXZlIiBkYXRhLXRhYj0icmVhY3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFiLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQxOC5wbmciIGFsdD0iUmVhY3QgQ29tcG9uZW50IEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi10ZXh0Ij5MaXN0aW5nczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZW1vLXRhYiIgZGF0YS10YWI9InB5dGhvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDE5LnBuZyIgYWx0PSJQeXRob24gQVBJIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi10ZXh0Ij5Db21wYW5pZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVtby10YWIiIGRhdGEtdGFiPSJtb2JpbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFiLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQyMS5wbmciIGFsdD0iTW9iaWxlIFVJIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi10ZXh0Ij5DYW5kaWRhdGVzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFJlYWN0IENvbXBvbmVudCBEZW1vIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcGFuZSBhY3RpdmUiIGlkPSJyZWFjdC1kZW1vIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1wcm9tcHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvbXB0LWljb24iPvCflI48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiJQcmV2aWV3OiBGZWF0dXJlZCBqb2IgbGlzdGluZ3MgYW5kIGhpZ2hsaWdodGVkIHJvbGVzIjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tY29kZS1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZG90cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgcmVkIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgeWVsbG93Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgZ3JlZW4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29kZS10aXRsZSI+TGlzdGluZ3MgUHJldmlldzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjb3B5LWJ0biI+8J+UjiBWaWV3PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtaW1hZ2UtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC8yLTEucG5nIiBhbHQ9IlNjaGVkdWxlIFByZXZpZXciIGNsYXNzPSJjb2RlLWltYWdlIGxhenkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIFB5dGhvbiBBUEkgRGVtbyAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXBhbmUiIGlkPSJweXRob24tZGVtbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcHJvbXB0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb21wdC1pY29uIj7wn4+iPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4iQ29tcGFueSBQcmV2aWV3OiBFbXBsb3llciBwcm9maWxlcyBhbmQgb3BlbiByb2xlcyI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvZGUtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWRvdHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHJlZCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHllbGxvdyI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IGdyZWVuIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUtdGl0bGUiPkNvbXBhbnkgUHJldmlldzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjb3B5LWJ0biI+8J+UjiBWaWV3PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtaW1hZ2UtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC8xLTEucG5nIiBhbHQ9IldvcmtzaG9wIFByZXZpZXciIGNsYXNzPSJjb2RlLWltYWdlIGxhenkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIE1vYmlsZSBVSSBEZW1vIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcGFuZSIgaWQ9Im1vYmlsZS1kZW1vIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1wcm9tcHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvbXB0LWljb24iPvCfkaQ8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiJDYW5kaWRhdGVzOiBIaWdobGlnaHRzLCBiaW9zLCBhbmQgc2tpbGwgc3VtbWFyaWVzIjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tY29kZS1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZG90cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgcmVkIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgeWVsbG93Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgZ3JlZW4iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29kZS10aXRsZSI+Q2FuZGlkYXRlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjb3B5LWJ0biI+8J+UjiBWaWV3PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtcHJldmlldyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9iaWxlLW1vY2t1cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2ZpbGUtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC9zcy5wbmciIGFsdD0iU3BlYWtlcnMiIGNsYXNzPSJjb2RlLWltYWdlIGxhenkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gTW9yZSBDYXBhYmlsaXRpZXMgU2VjdGlvbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiI+CgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJtb3JlLXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC13aGl0ZSI+RGlzY292ZXIgPC9wPm1vcmUgZm9yIEhpcmluZyAmIENhcmVlcnMKICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0ibW9yZS1zdWJ0aXRsZSI+RXhwbG9yZSBlbXBsb3llciB0b29scywgY2FuZGlkYXRlIHByb2ZpbGVzLCBhbmFseXRpY3MsIGFuZCBwcmVtaXVtIGhpcmluZyBzZXJ2aWNlcy48L3A+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0aWVzLWdyaWQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktaWNvbiB3ZWItaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvd2ViLWRldnYucG5nIiBhbHQ9IldlYiBEZXZlbG9wbWVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImNhcGFiaWxpdHktdGl0bGUiPkVtcGxveWVyIERhc2hib2FyZDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjYXBhYmlsaXR5LWRlc2NyaXB0aW9uIj5NYW5hZ2Ugam9iIHBvc3RpbmdzLCBjYW5kaWRhdGVzLCBhbmQgaGlyaW5nIHBpcGVsaW5lcyBpbiBvbmUgcGxhY2UuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWljb24gcHl0aG9uLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3B5dGhvbi5wbmciIGFsdD0iUHl0aG9uIFNjcmlwdHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJjYXBhYmlsaXR5LXRpdGxlIj5DYW5kaWRhdGUgUHJvZmlsZXM8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iY2FwYWJpbGl0eS1kZXNjcmlwdGlvbiI+UmljaCBjYW5kaWRhdGUgcHJvZmlsZXMgd2l0aCByZXN1bWVzLCBwb3J0Zm9saW9zLCBhbmQgc2tpbGwgZW5kb3JzZW1lbnRzLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0eS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0eS1pY29uIGRhdGEtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvZGF0YS1zY2llbmNlLnBuZyIgYWx0PSJEYXRhIFNjaWVuY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJjYXBhYmlsaXR5LXRpdGxlIj5UYWxlbnQgQW5hbHl0aWNzPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNhcGFiaWxpdHktZGVzY3JpcHRpb24iPkluc2lnaHRzIG9uIGhpcmVzLCBzb3VyY2luZyBjaGFubmVscywgYW5kIGNhbmRpZGF0ZSBmdW5uZWwgbWV0cmljcy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktaWNvbiBhcGktaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvYXBpLnBuZyIgYWx0PSJBUElzICYgQmFja2VuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImNhcGFiaWxpdHktdGl0bGUiPkFwcGxpY2FudCBUcmFja2luZzwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjYXBhYmlsaXR5LWRlc2NyaXB0aW9uIj5UcmFjayBhcHBsaWNhbnRzLCBzY2hlZHVsZSBpbnRlcnZpZXdzLCBhbmQgY29sbGFib3JhdGUgd2l0aCBoaXJpbmcgdGVhbXMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWljb24gbW9iaWxlLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL2FwcC1kZXYucG5nIiBhbHQ9Ik1vYmlsZSBBcHBzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iY2FwYWJpbGl0eS10aXRsZSI+TW9iaWxlIEpvYnMgQXBwPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNhcGFiaWxpdHktZGVzY3JpcHRpb24iPlNlYXJjaCBhbmQgYXBwbHkgdG8gam9icyBvciByZXZpZXcgY2FuZGlkYXRlcyBvbiB0aGUgZ28uPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWljb24gZGV2b3BzLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL2Rldm9wcy5wbmciIGFsdD0iRGV2T3BzICYgVG9vbHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJjYXBhYmlsaXR5LXRpdGxlIj5IaXJpbmcgVG9vbHM8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iY2FwYWJpbGl0eS1kZXNjcmlwdGlvbiI+SW50ZWdyYXRpb25zLCBhdXRvbWF0aW9uLCBhbmQgd29ya2Zsb3dzIHRvIHN0cmVhbWxpbmUgaGlyaW5nLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gQ2xpZW50IFRlc3RpbW9uaWFscyBTZWN0aW9uIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJsb3ZlZC10aXRsZSI+U3VjY2VzcyBTdG9yaWVzPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJsb3ZlZC1zdWJ0aXRsZSI+SGVhciBmcm9tIGNhbmRpZGF0ZXMgYW5kIGVtcGxveWVycyB3aG8gY29ubmVjdGVkLCBoaXJlZCwgYW5kIGdyZXcgd2l0aCBvdXIgcGxhdGZvcm08L3A+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdGltb25pYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0ZXN0aW1vbmlhbC1uYXYgcHJldi1idG4iIGlkPSJwcmV2QnRuIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUgMThMOSAxMkwxNSA2IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLWNhcmQgYWN0aXZlIiBkYXRhLXRlc3RpbW9uaWFsPSIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdGltb25pYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLWF2YXRhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1NDQwMDUzMTMtOTRkZGYwMjg2ZGYyP3c9NDAwJmg9NDAwJmZpdD1jcm9wJmF1dG89Zm9ybWF0JnE9ODAmaXhsaWI9cmItNC4wLjMmcz1wbGFjZWhvbGRlciIgYWx0PSJFbWlseSBEYXZpcyIgY2xhc3M9ImF2YXRhci1pbWcgbGF6eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLXJhdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGFyIj7irZA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGUgY2xhc3M9InRlc3RpbW9uaWFsLXF1b3RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJIGZvdW5kIG15IGN1cnJlbnQgcm9sZSB0aHJvdWdoIHRoaXMgam9iIGJvYXJkIOKAlCBjb25uZWN0ZWQgd2l0aCBoaXJpbmcgbWFuYWdlcnMgYW5kIHJlY2VpdmVkIGFuIG9mZmVyIHdpdGhpbiB3ZWVrcy4iCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLWF1dGhvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9ImF1dGhvci1uYW1lIj5FbWlseSBEYXZpczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYXV0aG9yLXJvbGUiPlByb2R1Y3QgTWFuYWdlcjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhdXRob3ItY29tcGFueSI+VGVjaFN0YXJ0PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGVzdGltb25pYWwtbmF2IG5leHQtYnRuIiBpZD0ibmV4dEJ0biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkgMThMMTUgMTJMOSA2IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1kb3RzIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkb3QgYWN0aXZlIiBkYXRhLXNsaWRlPSIwIj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkb3QiIGRhdGEtc2xpZGU9IjEiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRvdCIgZGF0YS1zbGlkZT0iMiI+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZG90IiBkYXRhLXNsaWRlPSIzIj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkb3QiIGRhdGEtc2xpZGU9IjQiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHMtZ3JpZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1udW1iZXIiPjUsMDAwKzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+QXR0ZW5kZWVzIChQcm9qZWN0ZWQpPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1udW1iZXIiPjEyMCs8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPlNwZWFrZXJzICYgTWVudG9yczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbnVtYmVyIj45NSUrPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5BdHRlbmRlZSBTYXRpc2ZhY3Rpb248L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gUmVhZHkgdG8gQ29kZSBGYXN0ZXIgU2VjdGlvbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVhZHktdG8tY29kZS1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImN0YS1pY29uIj7inKg8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImN0YS10aXRsZSI+UmVhZHkgdG8gaGlyZSBvciBmaW5kIHlvdXIgbmV4dCBqb2I/PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImN0YS1zdWJ0aXRsZSI+UG9zdCBvcGVuaW5ncywgYnJvd3NlIGNhbmRpZGF0ZXMsIG9yIGFwcGx5IHRvIGpvYnMgYW5kIGdldCBjb25uZWN0ZWQgd2l0aCBlbXBsb3llcnMuPC9wPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzLWNoZWNrbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iY2hlY2staWNvbiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2LjY2NjcgNUw3LjUgMTQuMTY2N0wzLjMzMzM0IDEwIiBzdHJva2U9IiM0QTkwRTIiIHN0cm9rZS13aWR0aD0iMiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5WZXJpZmllZCBlbXBsb3llcnMgJiBoaXJpbmcgdGVhbXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iY2hlY2staWNvbiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2LjY2NjcgNUw3LjUgMTQuMTY2N0wzLjMzMzM0IDEwIiBzdHJva2U9IiM0QTkwRTIiIHN0cm9rZS13aWR0aD0iMiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5PbmUtY2xpY2sgYXBwbHkgYW5kIHN0cmVhbWxpbmVkIGFwcGxpY2F0aW9uczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJjaGVjay1pY29uIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTYuNjY2NyA1TDcuNSAxNC4xNjY3TDMuMzMzMzQgMTAiIHN0cm9rZT0iIzRBOTBFMiIgc3Ryb2tlLXdpZHRoPSIyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkludGVydmlldyBzY2hlZHVsaW5nLCBmZWVkYmFjaywgYW5kIGFuYWx5dGljczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJjaGVjay1pY29uIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTYuNjY2NyA1TDcuNSAxNC4xNjY3TDMuMzMzMzQgMTAiIHN0cm9rZT0iIzRBOTBFMiIgc3Ryb2tlLXdpZHRoPSIyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkNhcmVlciByZXNvdXJjZXMsIGd1aWRlcywgYW5kIGhpcmluZyBzdXBwb3J0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3RhLWJ1dHRvbnMiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0YS1wcmltYXJ5LWJ0biIgaWQ9ImN0YUdldFN0YXJ0ZWQiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiBmaWxsPSJub25lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy44MjUgNi45MTY2OUwxMCAzLjA5MTY5TDYuMTc1IDYuOTE2NjkiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTAgMy4wOTE2OVYxNi45MDg0IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgUG9zdCBhIEpvYgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0YS1zZWNvbmRhcnktYnRuIiBpZD0iY3RhTGl2ZURlbW8iPkJyb3dzZSBKb2JzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdC1iYWRnZXMiPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0cnVzdC10ZXh0Ij5UcnVzdGVkIGJ5IGxlYXJuZXJzIGFuZCBwcm9mZXNzaW9uYWxzIHdvcmxkd2lkZTwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21wYW55LWxvZ29zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbXBhbnktbG9nbyI+R29vZ2xlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tcGFueS1sb2dvIj5NaWNyb3NvZnQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21wYW55LWxvZ28iPkFtYXpvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbXBhbnktbG9nbyI+TmV0ZmxpeDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbXBhbnktbG9nbyI+U3BvdGlmeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbXBhbnktbG9nbyI+VWJlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPC9tYWluPgogICAgPC9kaXY+CgogICAgPCEtLSBNYWluIGFwcGxpY2F0aW9uIGNvbnRhaW5lciB3aXRoIGNoYXQgYW5kIHNhbmRwYWNrIC0tPgogICAgPGRpdiBjbGFzcz0iYXBwLWNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgICA8IS0tIENoYXQgaW50ZXJmYWNlIC0tPgogICAgICAgIDxkaXYgaWQ9ImNoYXRJbnRlcmZhY2UiIGNsYXNzPSJjaGF0LWludGVyZmFjZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoYXQtY29udGFpbmVyIiBpZD0iY2hhdENvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8IS0tIE1lc3NhZ2VzIHdpbGwgYmUgZGlzcGxheWVkIGhlcmUgLS0+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1ib3giIGlkPSJsb2FkaW5nQm94IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFydGljbGUiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFydGljbGUiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFydGljbGUiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFydGljbGUiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1tZXNzYWdlIj5Db21pbmcgdXAgd2l0aCByZXNwb25zZSwgbWF5IHRha2UgYSBtaW51dGUuLi48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3Bpbm5lciI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBQZXJzaXN0ZW50IGNoYXQgaW5wdXQgdGhhdCBzaG91bGQgYWx3YXlzIGJlIHZpc2libGUgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNoYXQtaW5wdXQtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1vdXRlci1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWlubmVyLWNvbnRhaW5lciB2ZXJ0aWNhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0icHJvbXB0LWlucHV0IGNoYXQtcHJvbXB0LWlucHV0IiBwbGFjZWhvbGRlcj0iQXNrIGZvciBjb2RlIGNoYW5nZXMuLi4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPSIxIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1jb250cm9scy1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPSJhdHRhY2gtYnRuIHNxdWFyZSIgdGl0bGU9IkF0dGFjaCI+PHNwYW4+8J+Tjjwvc3Bhbj48L2J1dHRvbj4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWFsaXR5LXNlbGVjdG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJxdWFsaXR5U2VsZWN0Q2hhdCIgY2xhc3M9InF1YWxpdHktZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzdGFuZGFyZCI+IFNRPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImhpZ2hlciI+IEhRPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVhbGl0eS10b29sdGlwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvb2x0aXAtaWNvbiI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNpcmNsZS1pbmZvIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sdGlwLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5TdGFuZGFyZDo8L3N0cm9uZz4gUXVpY2sgZ2VuZXJhdGlvbiB3aXRoIGdvb2QgcXVhbGl0eTxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+SGlnaGVyOjwvc3Ryb25nPiBBcmNoaXRlY3R1cmFsIHBsYW5uaW5nICsgcHJlbWl1bSBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzdWJtaXQtYnRuIGNoYXQtc3VibWl0LWJ0biIgdGl0bGU9IlN1Ym1pdCI+PHNwYW4+4p6UPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBTYW5kcGFjayBjb250YWluZXIgLSBzZXBhcmF0ZSBmcm9tIGNoYXQgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2FuZHBhY2std3JhcHBlciIgaWQ9InNhbmRwYWNrV3JhcHBlciI+CiAgICAgICAgICAgIDwhLS0gVG9nZ2xlIGJ1dHRvbnMgZm9yIENvZGUvUHJldmlldyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlldy10b2dnbGUtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImNvZGVUb2dnbGUiIGNsYXNzPSJ2aWV3LXRvZ2dsZS1idG4iPkNvZGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9InByZXZpZXdUb2dnbGUiIGNsYXNzPSJ2aWV3LXRvZ2dsZS1idG4gYWN0aXZlIj5QcmV2aWV3PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2FuZHBhY2stY29udGFpbmVyIj48L2Rpdj4KICAgICAgICAgICAgPCEtLSBMb2FkaW5nIG92ZXJsYXkgZm9yIFNhbmRwYWNrIGFyZWEgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctb3ZlcmxheSIgaWQ9InNhbmRwYWNrTG9hZGluZ092ZXJsYXkiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaXRlY2gtbG9hZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLW1hdHJpeCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdHJpeC1saW5lIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0cml4LWxpbmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXRyaXgtbGluZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdHJpeC1saW5lIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0cml4LWxpbmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNlbnRyYWwtY29yZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtcmluZyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtcmluZyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtcmluZyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB1bHNlLWRvdCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRhdGEtc3RyZWFtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tMSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tMiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tMyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tNCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ2VvbWV0cmljLXBhdHRlcm5zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGV4LXBhdHRlcm4iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXgtcGF0dGVybiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhleC1wYXR0ZXJuIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1tZXNzYWdlIj5Db21pbmcgdXAgd2l0aCByZXNwb25zZSwgbWF5IHRha2UgYSBtaW51dGUuLi48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJmb290ZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1sZWZ0Ij4KICAgICAgICAgICAgSFIgJiBKb2IgQm9hcmQg4oCUIE9yZ2FuaXplZCBieSBIUiAmIEpvYiBCb2FyZC4gwqkgMjAyNi4gRm9yIHBhcnRuZXJzaGlwcyBhbmQgcHJlc3MsIDxhIGhyZWY9Im1haWx0bzpwYXJ0bmVyc0BleGFtcGxlLmNvbSI+Y29udGFjdCB1czwvYT4uCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXJpZ2h0Ij4KICAgICAgICAgICAgPCEtLSA8YSBocmVmPSIjIiBjbGFzcz0iZm9vdGVyLWljb24iIHRpdGxlPSJUd2l0dGVyIj7wn5CmPC9hPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZm9vdGVyLWljb24iIHRpdGxlPSJHaXRIdWIiPvCfkJk8L2E+IC0tPgogICAgICAgIDwvZGl2PgogICAgPC9mb290ZXI+Cgo8ZGl2IGlkPSJuZXRsaWZ5VG9rZW5Nb2RhbCIgY2xhc3M9Im1vZGFsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNsb3NlLW1vZGFsIiBvbmNsaWNrPSJjbG9zZU5ldGxpZnlUb2tlbk1vZGFsKCkiPsOXPC9zcGFuPgogICAgICAgIDxoMj5TZXQgTmV0bGlmeSBQZXJzb25hbCBBY2Nlc3MgVG9rZW48L2gyPgogICAgICAgIDxwPkVudGVyIHlvdXIgTmV0bGlmeSBQQVQgdG8gZGVwbG95IHVzaW5nIHlvdXIgYWNjb3VudC4gSWYgbm90IHNldCwgdGhlIGRlZmF1bHQgdG9rZW4gd2lsbCBiZSB1c2VkLjwvcD4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im5ldGxpZnlUb2tlbklucHV0IiBwbGFjZWhvbGRlcj0iRW50ZXIgeW91ciBOZXRsaWZ5IFBBVCIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nOiAxMHB4OyBtYXJnaW46IDEwcHggMDsiPgogICAgICAgIDxidXR0b24gb25jbGljaz0ic3VibWl0TmV0bGlmeVRva2VuKCkiPlN1Ym1pdDwvYnV0dG9uPgogICAgPC9kaXY+CjwvZGl2PgoKPCEtLSBKYXZhU2NyaXB0IG1vdmVkIHRvIGVuZCBvZiBmaWxlIC0tPgoKPCEtLSBBbGwgSmF2YVNjcmlwdCBtb3ZlZCB0byBlbmQgb2YgZmlsZSAtLT4KCjwhLS0gSlNaaXAgZm9yIGZpbGUgZG93bmxvYWRzIC0tPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanN6aXAvMy4xMC4xL2pzemlwLm1pbi5qcyI+PC9zY3JpcHQ+Cgo8IS0tIENPTkZJRyBKYXZhU2NyaXB0IC0tPgo8c2NyaXB0PgovLyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIExhbWJkYSBpbnRlZ3JhdGlvbgovLyBVcGRhdGUgdGhlIExBTUJEQV9CQVNFX1VSTCB3aXRoIHlvdXIgYWN0dWFsIExhbWJkYSBmdW5jdGlvbiBVUkwKCmNvbnN0IENPTkZJRyA9IHsKICAvLyBSZXBsYWNlIHRoaXMgd2l0aCB5b3VyIGFjdHVhbCBMYW1iZGEgZnVuY3Rpb24gVVJMCiAgTEFNQkRBX0JBU0VfVVJMOiAnaHR0cHM6Ly83bGM3N2JoNWhha2Zsb2gzb3Z6eHRhdHZjYTBlbGtxbC5sYW1iZGEtdXJsLnVzLWVhc3QtMS5vbi5hd3MnLAogIAogIC8vIEFQSSBlbmRwb2ludHMKICBFTkRQT0lOVFM6IHsKICAgIERFUExPWV9ORVRMSUZZOiAnL2FwaS9kZXBsb3ktbmV0bGlmeScsCiAgICBBUkNISVRFQ1Q6ICcvYXBpL2FyY2hpdGVjdCcsCiAgICBPUEVOQUk6ICcvYXBpL29wZW5haScsCiAgICBNT0RJRlk6ICcvYXBpL21vZGlmeScsCiAgICBDT05URVhUX1NFU1NJT046ICcvYXBpL2NvbnRleHQvc2Vzc2lvbicsCiAgICBDT05URVhUX0hFQUxUSDogJy9hcGkvY29udGV4dC9oZWFsdGgnCiAgfSwKICAKICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IGZ1bGwgQVBJIFVSTAogIGdldEFwaVVybDogZnVuY3Rpb24oZW5kcG9pbnQpIHsKICAgIHJldHVybiB0aGlzLkxBTUJEQV9CQVNFX1VSTCArIGVuZHBvaW50OwogIH0KfTsKCi8vIEV4cG9ydCBmb3IgdXNlIGluIG90aGVyIGZpbGVzCmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgewogIG1vZHVsZS5leHBvcnRzID0gQ09ORklHOwp9IGVsc2UgewogIHdpbmRvdy5DT05GSUcgPSBDT05GSUc7Cn0KPC9zY3JpcHQ+Cgo8IS0tIE1haW4gQXBwbGljYXRpb24gSmF2YVNjcmlwdCAtLT4KPHNjcmlwdD4gCi8vIEVuaGFuY2VkIFBlcnNpc3RlbmNlIE1hbmFnZXIKY2xhc3MgRW5oYW5jZWRQZXJzaXN0ZW5jZU1hbmFnZXIgewogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy5zdG9yYWdlS2V5cyA9IHsKICAgICAgQ0hBVF9ISVNUT1JZOiAnd2ViYnVpbGRlcl9jaGF0X2hpc3RvcnknLAogICAgICBURU1QTEFURTogJ3dlYmJ1aWxkZXJfdGVtcGxhdGUnLAogICAgICBRVUFMSVRZX1NFVFRJTkc6ICd3ZWJidWlsZGVyX3F1YWxpdHknLAogICAgICBVSV9TVEFURTogJ3dlYmJ1aWxkZXJfdWlfc3RhdGUnLAogICAgICBWSUVXX1RPR0dMRV9TVEFURTogJ3dlYmJ1aWxkZXJfdmlld190b2dnbGVfc3RhdGUnLAogICAgICBDVVJSRU5UX1VTRUNBU0U6ICd3ZWJidWlsZGVyX2N1cnJlbnRfdXNlY2FzZScsCiAgICAgIENPTlRFWFRfTUVUQURBVEE6ICd3ZWJidWlsZGVyX2NvbnRleHRfbWV0YWRhdGEnCiAgICB9OwogICAgCiAgICB0aGlzLmNvbnRleHRWYWxpZGF0aW9uID0gewogICAgICBtYXhDaGF0SGlzdG9yeVNpemU6IDUwLAogICAgICBtYXhDb2RlRmlsZVNpemU6IDEwMjQgKiAxMDI0LAogICAgICBjb250ZXh0RXhwaXJ5SG91cnM6IDI0CiAgICB9OwogIH0KCiAgLy8gRW5oYW5jZWQgY2hhdCBoaXN0b3J5IHdpdGggdmFsaWRhdGlvbiBhbmQgdXNlY2FzZSBhd2FyZW5lc3MKICBzYXZlQ2hhdEhpc3RvcnkocHJvbXB0cywgdXNlY2FzZSA9ICdkZWZhdWx0JykgewogICAgdHJ5IHsKICAgICAgLy8gVmFsaWRhdGUgYW5kIGNsZWFuIHByb21wdHMKICAgICAgY29uc3QgdmFsaWRhdGVkUHJvbXB0cyA9IHRoaXMudmFsaWRhdGVDaGF0SGlzdG9yeShwcm9tcHRzKTsKICAgICAgCiAgICAgIC8vIFNhdmUgd2l0aCBtZXRhZGF0YQogICAgICBjb25zdCBjaGF0RGF0YSA9IHsKICAgICAgICBwcm9tcHRzOiB2YWxpZGF0ZWRQcm9tcHRzLAogICAgICAgIHVzZWNhc2U6IHVzZWNhc2UsCiAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLAogICAgICAgIHZlcnNpb246ICcyLjAnIC8vIFZlcnNpb24gdHJhY2tpbmcgZm9yIGZ1dHVyZSBtaWdyYXRpb25zCiAgICAgIH07CiAgICAgIAogICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLkNIQVRfSElTVE9SWSwgSlNPTi5zdHJpbmdpZnkoY2hhdERhdGEpKTsKICAgICAgCiAgICAgIC8vIFVwZGF0ZSBjb250ZXh0IG1ldGFkYXRhCiAgICAgIHRoaXMudXBkYXRlQ29udGV4dE1ldGFkYXRhKHsKICAgICAgICBsYXN0Q2hhdFNhdmU6IERhdGUubm93KCksCiAgICAgICAgdXNlY2FzZTogdXNlY2FzZSwKICAgICAgICBwcm9tcHRDb3VudDogdmFsaWRhdGVkUHJvbXB0cy5sZW5ndGgKICAgICAgfSk7CiAgICAgIAogICAgICBjb25zb2xlLmxvZyhg8J+SviBTYXZlZCAke3ZhbGlkYXRlZFByb21wdHMubGVuZ3RofSBjaGF0IG1lc3NhZ2VzIGZvciB1c2VjYXNlOiAke3VzZWNhc2V9YCk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIGNoYXQgaGlzdG9yeTonLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBFbmhhbmNlZCBjaGF0IGhpc3RvcnkgbG9hZGluZyB3aXRoIHZhbGlkYXRpb24KICBsb2FkQ2hhdEhpc3RvcnkoZXhwZWN0ZWRVc2VjYXNlID0gbnVsbCkgewogICAgdHJ5IHsKICAgICAgY29uc3Qgc2F2ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLkNIQVRfSElTVE9SWSk7CiAgICAgIGlmICghc2F2ZWQpIHJldHVybiBbXTsKICAgICAgCiAgICAgIGNvbnN0IGNoYXREYXRhID0gSlNPTi5wYXJzZShzYXZlZCk7CiAgICAgIAogICAgICAvLyBIYW5kbGUgbGVnYWN5IGZvcm1hdCAoYXJyYXkgb2YgcHJvbXB0cykKICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hhdERhdGEpKSB7CiAgICAgICAgY29uc29sZS5sb2coJ/Cfk6YgTWlncmF0aW5nIGxlZ2FjeSBjaGF0IGhpc3RvcnkgZm9ybWF0Jyk7CiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVDaGF0SGlzdG9yeShjaGF0RGF0YSk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIFZhbGlkYXRlIGNvbnRleHQgZnJlc2huZXNzCiAgICAgIGlmICh0aGlzLmlzQ29udGV4dEV4cGlyZWQoY2hhdERhdGEudGltZXN0YW1wKSkgewogICAgICAgIGNvbnNvbGUubG9nKCfij7AgQ2hhdCBjb250ZXh0IGV4cGlyZWQsIGNsZWFyaW5nLi4uJyk7CiAgICAgICAgdGhpcy5jbGVhckNoYXRIaXN0b3J5KCk7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICAgIAogICAgICAvLyBVc2VjYXNlIHZhbGlkYXRpb24KICAgICAgaWYgKGV4cGVjdGVkVXNlY2FzZSAmJiBjaGF0RGF0YS51c2VjYXNlICE9PSBleHBlY3RlZFVzZWNhc2UpIHsKICAgICAgICBjb25zb2xlLmxvZyhg8J+UhCBVc2VjYXNlIG1pc21hdGNoOiBleHBlY3RlZCAke2V4cGVjdGVkVXNlY2FzZX0sIGZvdW5kICR7Y2hhdERhdGEudXNlY2FzZX1gKTsKICAgICAgICAvLyBEb24ndCBhdXRvLWNsZWFyLCBidXQgd2FybgogICAgICB9CiAgICAgIAogICAgICBjb25zdCB2YWxpZGF0ZWRQcm9tcHRzID0gdGhpcy52YWxpZGF0ZUNoYXRIaXN0b3J5KGNoYXREYXRhLnByb21wdHMgfHwgW10pOwogICAgICBjb25zb2xlLmxvZyhg8J+TliBMb2FkZWQgJHt2YWxpZGF0ZWRQcm9tcHRzLmxlbmd0aH0gY2hhdCBtZXNzYWdlcyBmb3IgdXNlY2FzZTogJHtjaGF0RGF0YS51c2VjYXNlfWApOwogICAgICAKICAgICAgcmV0dXJuIHZhbGlkYXRlZFByb21wdHM7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIGNoYXQgaGlzdG9yeTonLCBlcnJvcik7CiAgICAgIHJldHVybiBbXTsKICAgIH0KICB9CgogIC8vIEVuaGFuY2VkIGNvZGUgZmlsZXMgd2l0aCB2YWxpZGF0aW9uIGFuZCB1c2VjYXNlIGF3YXJlbmVzcwogIHNhdmVDb2RlRmlsZXMoY29kZUZpbGVzLCB1c2VjYXNlID0gJ2RlZmF1bHQnKSB7CiAgICB0cnkgewogICAgICAvLyBWYWxpZGF0ZSBjb2RlIGZpbGVzCiAgICAgIGNvbnN0IHZhbGlkYXRlZEZpbGVzID0gdGhpcy52YWxpZGF0ZUNvZGVGaWxlcyhjb2RlRmlsZXMpOwogICAgICAKICAgICAgY29uc3QgY29kZURhdGEgPSB7CiAgICAgICAgZmlsZXM6IHZhbGlkYXRlZEZpbGVzLAogICAgICAgIHVzZWNhc2U6IHVzZWNhc2UsCiAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLAogICAgICAgIHZlcnNpb246ICcyLjAnCiAgICAgIH07CiAgICAgIAogICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLkNPREVfRklMRVMsIEpTT04uc3RyaW5naWZ5KGNvZGVEYXRhKSk7CiAgICAgIAogICAgICAvLyBVcGRhdGUgY29udGV4dCBtZXRhZGF0YQogICAgICB0aGlzLnVwZGF0ZUNvbnRleHRNZXRhZGF0YSh7CiAgICAgICAgbGFzdENvZGVTYXZlOiBEYXRlLm5vdygpLAogICAgICAgIHVzZWNhc2U6IHVzZWNhc2UsCiAgICAgICAgZmlsZUNvdW50OiBPYmplY3Qua2V5cyh2YWxpZGF0ZWRGaWxlcykubGVuZ3RoCiAgICAgIH0pOwogICAgICAKICAgICAgY29uc29sZS5sb2coYPCfkr4gU2F2ZWQgJHtPYmplY3Qua2V5cyh2YWxpZGF0ZWRGaWxlcykubGVuZ3RofSBjb2RlIGZpbGVzIGZvciB1c2VjYXNlOiAke3VzZWNhc2V9YCk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIGNvZGUgZmlsZXM6JywgZXJyb3IpOwogICAgfQogIH0KCiAgLy8gRW5oYW5jZWQgY29kZSBmaWxlcyBsb2FkaW5nIHdpdGggdmFsaWRhdGlvbgogIGxvYWRDb2RlRmlsZXMoZXhwZWN0ZWRVc2VjYXNlID0gbnVsbCkgewogICAgdHJ5IHsKICAgICAgY29uc3Qgc2F2ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLkNPREVfRklMRVMpOwogICAgICBpZiAoIXNhdmVkKSByZXR1cm4gbnVsbDsKICAgICAgCiAgICAgIGNvbnN0IGNvZGVEYXRhID0gSlNPTi5wYXJzZShzYXZlZCk7CiAgICAgIAogICAgICAvLyBIYW5kbGUgbGVnYWN5IGZvcm1hdCAoZGlyZWN0IGZpbGVzIG9iamVjdCkKICAgICAgaWYgKCFjb2RlRGF0YS52ZXJzaW9uICYmICFjb2RlRGF0YS50aW1lc3RhbXApIHsKICAgICAgICBjb25zb2xlLmxvZygn8J+TpiBNaWdyYXRpbmcgbGVnYWN5IGNvZGUgZmlsZXMgZm9ybWF0Jyk7CiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVDb2RlRmlsZXMoY29kZURhdGEpOwogICAgICB9CiAgICAgIAogICAgICAvLyBWYWxpZGF0ZSBjb250ZXh0IGZyZXNobmVzcwogICAgICBpZiAodGhpcy5pc0NvbnRleHRFeHBpcmVkKGNvZGVEYXRhLnRpbWVzdGFtcCkpIHsKICAgICAgICBjb25zb2xlLmxvZygn4o+wIENvZGUgY29udGV4dCBleHBpcmVkLCBjbGVhcmluZy4uLicpOwogICAgICAgIHRoaXMuY2xlYXJDb2RlRmlsZXMoKTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICAKICAgICAgLy8gVXNlY2FzZSB2YWxpZGF0aW9uCiAgICAgIGlmIChleHBlY3RlZFVzZWNhc2UgJiYgY29kZURhdGEudXNlY2FzZSAhPT0gZXhwZWN0ZWRVc2VjYXNlKSB7CiAgICAgICAgY29uc29sZS5sb2coYPCflIQgQ29kZSB1c2VjYXNlIG1pc21hdGNoOiBleHBlY3RlZCAke2V4cGVjdGVkVXNlY2FzZX0sIGZvdW5kICR7Y29kZURhdGEudXNlY2FzZX1gKTsKICAgICAgfQogICAgICAKICAgICAgY29uc3QgdmFsaWRhdGVkRmlsZXMgPSB0aGlzLnZhbGlkYXRlQ29kZUZpbGVzKGNvZGVEYXRhLmZpbGVzIHx8IHt9KTsKICAgICAgY29uc29sZS5sb2coYPCfk5YgTG9hZGVkICR7T2JqZWN0LmtleXModmFsaWRhdGVkRmlsZXMpLmxlbmd0aH0gY29kZSBmaWxlcyBmb3IgdXNlY2FzZTogJHtjb2RlRGF0YS51c2VjYXNlfWApOwogICAgICAKICAgICAgcmV0dXJuIHZhbGlkYXRlZEZpbGVzOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBjb2RlIGZpbGVzOicsIGVycm9yKTsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvLyBTYXZlIGN1cnJlbnQgdGVtcGxhdGUKICBzYXZlVGVtcGxhdGUodGVtcGxhdGUpIHsKICAgIHRyeSB7CiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuVEVNUExBVEUsIHRlbXBsYXRlKTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNhdmUgdGVtcGxhdGU6JywgZXJyb3IpOwogICAgfQogIH0KCiAgLy8gTG9hZCBjdXJyZW50IHRlbXBsYXRlCiAgbG9hZFRlbXBsYXRlKCkgewogICAgdHJ5IHsKICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuVEVNUExBVEUpIHx8ICdyZWFjdCc7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIHRlbXBsYXRlOicsIGVycm9yKTsKICAgICAgcmV0dXJuICdyZWFjdCc7CiAgICB9CiAgfQoKICAvLyBTYXZlIHF1YWxpdHkgc2V0dGluZwogIHNhdmVRdWFsaXR5U2V0dGluZyhxdWFsaXR5KSB7CiAgICB0cnkgewogICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLlFVQUxJVFlfU0VUVElORywgcXVhbGl0eSk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIHF1YWxpdHkgc2V0dGluZzonLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBMb2FkIHF1YWxpdHkgc2V0dGluZwogIGxvYWRRdWFsaXR5U2V0dGluZygpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLlFVQUxJVFlfU0VUVElORykgfHwgJ3N0YW5kYXJkJzsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgcXVhbGl0eSBzZXR0aW5nOicsIGVycm9yKTsKICAgICAgcmV0dXJuICdzdGFuZGFyZCc7CiAgICB9CiAgfQoKICAvLyBTYXZlIFVJIHN0YXRlCiAgc2F2ZVVJU3RhdGUodWlTdGF0ZSkgewogICAgdHJ5IHsKICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5VSV9TVEFURSwgSlNPTi5zdHJpbmdpZnkodWlTdGF0ZSkpOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gc2F2ZSBVSSBzdGF0ZTonLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBMb2FkIFVJIHN0YXRlCiAgbG9hZFVJU3RhdGUoKSB7CiAgICB0cnkgewogICAgICBjb25zdCBzYXZlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuVUlfU1RBVEUpOwogICAgICByZXR1cm4gc2F2ZWQgPyBKU09OLnBhcnNlKHNhdmVkKSA6IHsgY2hhdFZpc2libGU6IGZhbHNlIH07CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIFVJIHN0YXRlOicsIGVycm9yKTsKICAgICAgcmV0dXJuIHsgY2hhdFZpc2libGU6IGZhbHNlIH07CiAgICB9CiAgfQoKICAvLyBTYXZlIHZpZXcgdG9nZ2xlIHN0YXRlCiAgc2F2ZVZpZXdUb2dnbGVTdGF0ZSh2aWV3U3RhdGUpIHsKICAgIHRyeSB7CiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuVklFV19UT0dHTEVfU1RBVEUsIEpTT04uc3RyaW5naWZ5KHZpZXdTdGF0ZSkpOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gc2F2ZSB2aWV3IHRvZ2dsZSBzdGF0ZTonLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBMb2FkIHZpZXcgdG9nZ2xlIHN0YXRlCiAgbG9hZFZpZXdUb2dnbGVTdGF0ZSgpIHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHNhdmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5WSUVXX1RPR0dMRV9TVEFURSk7CiAgICAgIHJldHVybiBzYXZlZCA/IEpTT04ucGFyc2Uoc2F2ZWQpIDogeyBjdXJyZW50VmlldzogJ2NvZGUnIH07CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIHZpZXcgdG9nZ2xlIHN0YXRlOicsIGVycm9yKTsKICAgICAgcmV0dXJuIHsgY3VycmVudFZpZXc6ICdjb2RlJyB9OwogICAgfQogIH0KCiAgLy8gQ2xlYXIgYWxsIHNhdmVkIGRhdGEKICBjbGVhckFsbCgpIHsKICAgIE9iamVjdC52YWx1ZXModGhpcy5zdG9yYWdlS2V5cykuZm9yRWFjaChrZXkgPT4gewogICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpOwogICAgfSk7CiAgfQoKICAvLyBDbGVhciBhbGwgc2F2ZWQgZGF0YSBleGNlcHQgdGhlbWUgYW5kIHZpZXcgdG9nZ2xlIHN0YXRlIChmb3IgSFEgbW9kZSkKICBjbGVhckFsbEV4Y2VwdENyaXRpY2FsKCkgewogICAgY29uc3Qga2V5c1RvUHJlc2VydmUgPSBbCiAgICAgIHRoaXMuc3RvcmFnZUtleXMuVklFV19UT0dHTEVfU1RBVEUsCiAgICAgICd0aGVtZScgLy8gUHJlc2VydmUgdGhlbWUgYXMgd2VsbAogICAgXTsKICAgIAogICAgT2JqZWN0LnZhbHVlcyh0aGlzLnN0b3JhZ2VLZXlzKS5mb3JFYWNoKGtleSA9PiB7CiAgICAgIGlmICgha2V5c1RvUHJlc2VydmUuaW5jbHVkZXMoa2V5KSkgewogICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7CiAgICAgIH0KICAgIH0pOwogICAgCiAgICBjb25zb2xlLmxvZygn8J+nuSBDbGVhcmVkIGFsbCBkYXRhIGV4Y2VwdCBjcml0aWNhbCBzZXR0aW5ncycpOwogIH0KCiAgLy8gRW5oYW5jZWQgdmFsaWRhdGlvbiBtZXRob2RzCiAgdmFsaWRhdGVDaGF0SGlzdG9yeShwcm9tcHRzKSB7CiAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvbXB0cykpIHJldHVybiBbXTsKICAgIAogICAgcmV0dXJuIHByb21wdHMKICAgICAgLmZpbHRlcihwcm9tcHQgPT4gcHJvbXB0ICYmIHR5cGVvZiBwcm9tcHQgPT09ICdvYmplY3QnKQogICAgICAuZmlsdGVyKHByb21wdCA9PiBwcm9tcHQucm9sZSAmJiBwcm9tcHQuY29udGVudCkKICAgICAgLnNsaWNlKC10aGlzLmNvbnRleHRWYWxpZGF0aW9uLm1heENoYXRIaXN0b3J5U2l6ZSkgLy8gS2VlcCBvbmx5IHJlY2VudCBtZXNzYWdlcwogICAgICAubWFwKHByb21wdCA9PiAoewogICAgICAgIHJvbGU6IFN0cmluZyhwcm9tcHQucm9sZSkudHJpbSgpLAogICAgICAgIGNvbnRlbnQ6IFN0cmluZyhwcm9tcHQuY29udGVudCkudHJpbSgpCiAgICAgIH0pKTsKICB9CgogIHZhbGlkYXRlQ29kZUZpbGVzKGNvZGVGaWxlcykgewogICAgaWYgKCFjb2RlRmlsZXMgfHwgdHlwZW9mIGNvZGVGaWxlcyAhPT0gJ29iamVjdCcpIHJldHVybiB7fTsKICAgIAogICAgY29uc3QgdmFsaWRhdGVkRmlsZXMgPSB7fTsKICAgIAogICAgT2JqZWN0LmVudHJpZXMoY29kZUZpbGVzKS5mb3JFYWNoKChbZmlsZVBhdGgsIGZpbGVEYXRhXSkgPT4gewogICAgICBpZiAoIWZpbGVQYXRoIHx8IHR5cGVvZiBmaWxlUGF0aCAhPT0gJ3N0cmluZycpIHJldHVybjsKICAgICAgCiAgICAgIC8vIEhhbmRsZSBib3RoIGxlZ2FjeSBmb3JtYXQgKGRpcmVjdCBjb2RlIHN0cmluZykgYW5kIG5ldyBmb3JtYXQgKG9iamVjdCB3aXRoIGNvZGUgcHJvcGVydHkpCiAgICAgIGxldCBjb2RlID0gJyc7CiAgICAgIGlmICh0eXBlb2YgZmlsZURhdGEgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgY29kZSA9IGZpbGVEYXRhOwogICAgICB9IGVsc2UgaWYgKGZpbGVEYXRhICYmIHR5cGVvZiBmaWxlRGF0YSA9PT0gJ29iamVjdCcgJiYgZmlsZURhdGEuY29kZSkgewogICAgICAgIGNvZGUgPSBTdHJpbmcoZmlsZURhdGEuY29kZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGludmFsaWQgZmlsZSBkYXRhCiAgICAgIH0KICAgICAgCiAgICAgIC8vIFZhbGlkYXRlIGZpbGUgc2l6ZQogICAgICBpZiAoY29kZS5sZW5ndGggPiB0aGlzLmNvbnRleHRWYWxpZGF0aW9uLm1heENvZGVGaWxlU2l6ZSkgewogICAgICAgIGNvbnNvbGUud2FybihgRmlsZSAke2ZpbGVQYXRofSBleGNlZWRzIHNpemUgbGltaXQsIHRydW5jYXRpbmcuLi5gKTsKICAgICAgICBjb2RlID0gY29kZS5zdWJzdHJpbmcoMCwgdGhpcy5jb250ZXh0VmFsaWRhdGlvbi5tYXhDb2RlRmlsZVNpemUpOwogICAgICB9CiAgICAgIAogICAgICB2YWxpZGF0ZWRGaWxlc1tmaWxlUGF0aF0gPSB7CiAgICAgICAgY29kZTogY29kZSwKICAgICAgICBoaWRkZW46IGZpbGVEYXRhLmhpZGRlbiB8fCBmYWxzZQogICAgICB9OwogICAgfSk7CiAgICAKICAgIHJldHVybiB2YWxpZGF0ZWRGaWxlczsKICB9CgogIGlzQ29udGV4dEV4cGlyZWQodGltZXN0YW1wKSB7CiAgICBpZiAoIXRpbWVzdGFtcCkgcmV0dXJuIHRydWU7CiAgICBjb25zdCBleHBpcnlUaW1lID0gdGhpcy5jb250ZXh0VmFsaWRhdGlvbi5jb250ZXh0RXhwaXJ5SG91cnMgKiA2MCAqIDYwICogMTAwMDsKICAgIHJldHVybiAoRGF0ZS5ub3coKSAtIHRpbWVzdGFtcCkgPiBleHBpcnlUaW1lOwogIH0KCiAgLy8gVXNlY2FzZSBtYW5hZ2VtZW50CiAgc2F2ZUN1cnJlbnRVc2VjYXNlKHVzZWNhc2UpIHsKICAgIH