PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CjxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9UG93ZXJQb2ludC5TbGlkZT4KPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFBvd2VyUG9pbnQgMTAiPgo8bGluayBpZD1NYWluLUZpbGUgcmVsPU1haW4tRmlsZSBocmVmPSIuLi9FY2xpcHNlQ29uMjAwNl9TaG9ydFRhbGsuaHRtbCI+CjxsaW5rIHJlbD1QcmV2aWV3IGhyZWY9cHJldmlldy53bWY+CjxtZXRhIG5hbWU9Um9ib3RzIGNvbnRlbnQ9Tm9JbmRleD4KPHNjcmlwdCBzcmM9c2NyaXB0LmpzPjwvc2NyaXB0PjxzY3JpcHQ+PCEtLQppZiggIShJc1dpbigiUFBUT3RsIil8fElzV2luKCJQUFROYXYiKXx8SXNXaW4oIlBQVE90bE5hdiIpKSApCnsKCW9iaiA9IEdldE9iaigiTWFpbi1GaWxlIikKCXBhcmVudC5sb2NhdGlvbi5ocmVmPW9iai5ocmVmCn0KdmFyIGdPdGxIaWxpdGVDbHI9IiNmZmZmZmYiLGdPdGxOb3JtYWxDbHI9IiMwMDAwMDAiLGdPdGxBY3RpdmVDbHI9IiNmZmZmMDAiLGdTZWxlY3RlZD0iIixnVHh0U3RhdGU9ZmFsc2UsZ0NoaWxkRW50cnlUYWJsZT1uZXcgQXJyYXkoKQpmdW5jdGlvbiBMb2FkKCkKewoJaWYoIElzV2luKCJQUFRPdGwiICkgKXsgTG9hZE90bCgpOyBwYXJlbnQuZ090bExvYWRlZD10cnVlOyByZXR1cm4gfQoJaWYoIGdfc3VwcG9ydHNQUFRIVE1MICkgewoJCWlmKCBJc1dpbigiUFBUTmF2IiApICl7IExvYWROYXYoIk5hdk9iaiIsVXBkTmF2KTsgcGFyZW50LmdOYXZMb2FkZWQ9dHJ1ZTsgcmV0dXJuIH0KCQlpZiggSXNXaW4oIlBQVE90bE5hdiIgKSApeyBMb2FkTmF2KCJPdGxOYXZPYmoiLFVwZE90bE5hdik7IHBhcmVudC5nT3RsTmF2TG9hZGVkPXRydWU7IHJldHVybiB9Cgl9Cn0KZnVuY3Rpb24gVXBkKCl7IGlmKCBJc1dpbigiUFBUTmF2IikgKSBMb2FkTmF2KCJOYXZPYmoiLFVwZE5hdikgfQpmdW5jdGlvbiBMb2FkTmF2KCBvSWQsVXBkRnVuYyApCnsKCWRvY3VtZW50Lm9uZHJhZ3N0YXJ0PUNhbmNlbERyYWcKCWRvY3VtZW50Lm9uc2VsZWN0c3RhcnQ9Q2FuY2VsRHJhZwoJZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW49MgoJVXBkRnVuYygpCglvYmo9ZG9jdW1lbnQuYWxsLml0ZW0ob0lkKQoJb2JqLnN0eWxlLmRpc3BsYXk9ImJsb2NrIgoJb2JqLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiCglkb2N1bWVudC5iZ0NvbG9yPSJ0aHJlZWRmYWNlIgoJaWYoIHBhcmVudC5mcmFtZXNbIlBQVE50cyJdICkKCQlub3Rlc0J0bi5zdHlsZS5kaXNwbGF5ID0gIiIKCWlmKCBwYXJlbnQuZ0hhc05hcnJhdGlvbiApCgkJbmJfdm9pY2VCb3JkZXIuc3R5bGUuZGlzcGxheSA9ICIiCn0KZnVuY3Rpb24gTG9hZE90bCgpCnsKCXZhciBvdGw9R2V0T2JqKCJPdGxPYmoiKQoJb3RsLnN0eWxlLmRpc3BsYXk9ImJsb2NrIgoJb3RsLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiCglpZiggZ090bEFjdGl2ZUNsciA9PSAiIiApIGdPdGxBY3RpdmVDbHI9ZG9jdW1lbnQubGlua0NvbG9yCglpZiggZ090bEhpbGl0ZUNsciA9PSAiIiApIGdPdGxIaWxpdGVDbHI9ZG9jdW1lbnQuZmdDb2xvcgoJaWYoIGdPdGxOb3JtYWxDbHIgPT0gIiIgKQoJCWdPdGxOb3JtYWxDbHI9ZG9jdW1lbnQuYmdDb2xvcgoJZWxzZQoJCWRvY3VtZW50LmJnQ29sb3I9Z090bE5vcm1hbENscgoJSW5pdEFycmF5KCkKCWlmKCBPYmpFeGlzdHMoIHBhcmVudC5nQ3VyU2xkICkgKSB7CgkJQ2hhbmdlU3RhdGUoIHBhcmVudC5nQ3VyU2xkLGdPdGxOb3JtYWxDbHIsZ090bEhpbGl0ZUNsciApCgkJZ1NlbGVjdGVkPXBhcmVudC5nQ3VyU2xkCgl9CgllbHNlIGdTZWxlY3RlZCA9IC0xCglVcGRPdGwoKQp9CmZ1bmN0aW9uIFVwZE90bCgpeyBVcGRJZHgocGFyZW50LmdDdXJTbGQpIH0KZnVuY3Rpb24gVXBkSWR4KCBpZHggKQp7CglpZiggZ1NlbGVjdGVkICE9IGlkeCApIHsKCQlpZiggZ1NlbGVjdGVkID4gMCApCgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bEhpbGl0ZUNscixnT3RsTm9ybWFsQ2xyICkKCQlpZiggT2JqRXhpc3RzKCBpZHggKSApIHsKCQkJZ1NlbGVjdGVkID0gaWR4CgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bE5vcm1hbENscixnT3RsSGlsaXRlQ2xyICkKCQl9CgkJZWxzZSBnU2VsZWN0ZWQgPSAtMQoJfQoJaWYoIGdUeHRTdGF0ZSAhPSBwYXJlbnQuZ090bFR4dEV4cCApIHsKCQlzdGF0ZSA9ICJibG9jayIKCQlpZiggIXBhcmVudC5nT3RsVHh0RXhwICkKCQkJc3RhdGU9Im5vbmUiCgkJZm9yKGlpPTA7IGlpPGdDaGlsZEVudHJ5VGFibGUubGVuZ3RoOyBpaSsrKSB7CgkJCW9iaj1nQ2hpbGRFbnRyeVRhYmxlW2lpXTsKCQkJaWYoIG9iai5pZCA9PSBudWxsICkgY29udGludWU7CgkJCWlmKCBvYmouaWQuaW5kZXhPZigiUFBUQyIpID49IDAgKQoJCQkJb2JqLnN0eWxlLmRpc3BsYXk9c3RhdGU7CgkJfQoJCWdUeHRTdGF0ZT1wYXJlbnQuZ090bFR4dEV4cAoJCWlmKCBPYmpFeGlzdHMoIGdTZWxlY3RlZCApICkKCQkJQ2hhbmdlU3RhdGUoIGdTZWxlY3RlZCxnT3RsTm9ybWFsQ2xyLGdPdGxIaWxpdGVDbHIgKQoJfQp9CmZ1bmN0aW9uIEluaXRBcnJheSgpCnsKCWNvdW50PTAKCXZhciBsaXN0PUdldFRhZ3MoZG9jdW1lbnQsIkRJViIpOwoJZm9yKGlpPTA7IGlpPGxpc3QubGVuZ3RoOyBpaSsrKSB7CgkJb2JqPWxpc3QuaXRlbShpaSkKCQlpZiggb2JqLmlkID09IG51bGwgKSBjb250aW51ZQoJCWlmKCBvYmouaWQuaW5kZXhPZigiUFBUQyIpID49IDAgKQoJCQlnQ2hpbGRFbnRyeVRhYmxlW2NvdW50KytdPW9iagoJfQp9CmZ1bmN0aW9uIENoYW5nZVN0YXRlKCBpZHgsZmdDb2xvcixiZ0NvbG9yICkKewoJb2JqPUdldE9iaigiUFBUTCIraWR4KQoJb2JqLnN0eWxlLmNvbG9yPWZnQ29sb3IKCW9iaj1HZXRPYmooIlBQVFAiK2lkeCkKCW9iai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9YmdDb2xvcgp9CmZ1bmN0aW9uIENoZ0NsciggbyxjbHIgKXsgaWYoIG8uaWQgIT0gIlBQVEwiK2dTZWxlY3RlZCApIG8uc3R5bGUuY29sb3I9Y2xyIH0KZnVuY3Rpb24gT3Zlciggc3JjICl7IENoZ0NscihHZXRMaW5rKHNyYyksZ090bEFjdGl2ZUNscikgfQpmdW5jdGlvbiBPdXQoIHNyYyApeyBDaGdDbHIoR2V0TGluayhzcmMpLGdPdGxIaWxpdGVDbHIpIH0KZnVuY3Rpb24gRm9sbG93KHNyYyl7IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gR2V0TGluayhzcmMpLmhyZWY7IH0KZnVuY3Rpb24gT2JqRXhpc3RzKCBpaSApIHsgb2JqPUdldE9iaigiUFBUUCIraWkgKTsgcmV0dXJuKCBvYmogKSB9CmZ1bmN0aW9uIEdvVG9TbGQoIGhyZWYgKXsgVXBkSWR4KHBhcmVudC5HZXRTbGROdW0oaHJlZikpOyBwYXJlbnQuR29Ub1NsZCggaHJlZiApIH0KZnVuY3Rpb24gQ2FuY2VsRHJhZygpeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlPXRydWU7d2luZG93LmV2ZW50LnJldHVyblZhbHVlPWZhbHNlfQpmdW5jdGlvbiBHZXRMaW5rKHNyYykKewogICBpZihzcmMudGFnTmFtZT09IkEiKSByZXR1cm4gc3JjCiAgIGVsc2UgcmV0dXJuIEdldFRhZ3Moc3JjLCJBIikuaXRlbSgwKQp9CmZ1bmN0aW9uIFVwZE5hdigpCnsKCXR4dCA9ICI8Y2VudGVyPiI7CglpZiggcGFyZW50LkdldEhyZWZPYmooIHBhcmVudC5nQ3VyU2xkICkubU9yaWdWaXMgPT0gMSApCgkJdHh0ICs9ICJTbGlkZSAiICsgcGFyZW50LkdldEN1clNsZE51bSgpICsgIiBvZiAiICsgcGFyZW50LkdldE51bVNsZHMoKQoJZWxzZQoJCXR4dCArPSAiSGlkZGVuIFNsaWRlIgoJdHh0ICs9ICI8L2NlbnRlcj4iOwoJbmF2X3RleHQuaW5uZXJIVE1MID0gdHh0OwoJaWYoICFwYXJlbnQuSGFzUHJldlNsZCgpICkKCQlnQnRuQXJyWyJuYl9wcmV2Il0uRW5hYmxlZCgwKQoJZWxzZQoJCWdCdG5BcnJbIm5iX3ByZXYiXS5FbmFibGVkKDEpCglpZiggIXBhcmVudC5IYXNOZXh0U2xkKCkgKQoJCWdCdG5BcnJbIm5iX25leHQiXS5FbmFibGVkKDApCgllbHNlCgkJZ0J0bkFyclsibmJfbmV4dCJdLkVuYWJsZWQoMSkKCWdCdG5BcnJbIm5iX250cyJdLlNldEVuYWJsZWQoKQoJZ0J0bkFyclsibmJfbnRzIl0uU2V0RmxhZyggcGFyZW50LmdIYXNOdHMgKQoJZ0J0bkFyclsibmJfc2xkc2h3Il0uRW5hYmxlZCgxKQoJZ0J0bkFyclsibmJfdm9pY2UiXS5FbmFibGVkKDEpCn0KZnVuY3Rpb24gVXBkT3RsTmF2KCkKewoJZ0J0bkFyclsibmJfb3RsIl0uU2V0RW5hYmxlZCgpOwoJaWYoIHBhcmVudC5nT3RsT3BlbiApCgkJZ0J0bkFyclsibmJfb3RsVHh0Il0uRW5hYmxlZCggdHJ1ZSApOwoJZWxzZQoJCWRvY3VtZW50LmFsbC5pdGVtKCJuYl9vdGxUeHRCb3JkZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cn0KCi8vLS0+PC9zY3JpcHQ+CjxzdHlsZT4KPCEtLS5QVHh0Cgl7cG9zaXRpb246cmVsYXRpdmU7Cgl3aWR0aDoxMDAlOwoJbWFyZ2luLXRvcDo1cHg7CglwYWRkaW5nLWxlZnQ6MnB4OwoJZm9udC13ZWlnaHQ6Ym9sZDt9Ci5DVHh0Cgl7cG9zaXRpb246cmVsYXRpdmU7Cgl3aWR0aDoxMDAlOwoJbWFyZ2luLXRvcDo1cHg7fQphCgl7Y29sb3I6d2hpdGU7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTt9CnVsCgl7Y29sb3I6d2hpdGU7CgltYXJnaW4tYm90dG9tOjBweDsKCW1hcmdpbi1sZWZ0OjIwcHg7fQouc2xkTnVtCgl7bWFyZ2luLXRvcDo1cHg7Cgljb2xvcjp3aGl0ZTt9Ci5idXR0b24KCXtwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjMycHg7CgloZWlnaHQ6MjBweDsKCWJvcmRlci1zdHlsZTpzb2xpZDsKCWJvcmRlci13aWR0aDoxcHg7Cglib3JkZXItY29sb3I6dGhyZWVkZmFjZTt9Ci0tPgo8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keSBvbmxvYWQ9IkxvYWQoKSIgc3R5bGU9J21hcmdpbjoycHgnPgoKPGRpdiBpZD1OYXZPYmogb25sb2FkPSJMb2FkKCkiIG9ubW91c2VvdmVyPSJCdG5Pbk92ZXIoKSIKb25tb3VzZWRvd249IkJ0bk9uRG93bigpIiBvbm1vdXNlb3V0PSJCdG5Pbk91dCgpIiBvbm1vdXNldXA9IkJ0bk9uVXAoKSIKb25rZXlwcmVzcz0iX0tQSCgpIiBzdHlsZT0nZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuJz4KPHRhYmxlIGlkPSJub3Rlc0J0biIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6bm9uZTt3aWR0aDo3MHB4JyBhbGlnbj1sZWZ0IGNlbGxwYWRkaW5nPTAKIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPgogPGRpdiBpZD0ibmJfbnRzRWxlbSIgYWxpZ249Y2VudGVyIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjNweDsKIGZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+PGltZyBzcmM9Im5vdGVzX2ZsYWcuZ2lmIgogYm9yZGVyPTAgaWQ9Im5vdGVzX2ZsYWciIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxzcGFuCnN0eWxlPSdtc28tc3BhY2VydW46eWVzJz6gIDwvc3Bhbj5Ob3RlczwvZGl2PgogPGRpdiB0aXRsZT0iU2hvdy9IaWRlIE5vdGVzIiBpZD0ibmJfbnRzIiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjAlOwogbGVmdDowJTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlJz48L2Rpdj4KIDwvdGQ+CjwvdGFibGU+Cgo8dGFibGUgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjcwcHgnIGFsaWduPXJpZ2h0IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KIDx0ZCBub3dyYXA+CiA8ZGl2IGlkPSJuYl9zbGRzaHdUZXh0IiB0aXRsZT0iRnVsbApTY3JlZW4gU2xpZGUgU2hvdyIgYWxpZ249Y2VudGVyIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tbGVmdDoyMHB4O3BhZGRpbmc6M3B4OwogZm9udC1mYW1pbHk6QXJpYWw7Y29sb3I6YnV0dG9udGV4dDtmb250LXNpemU6OXB0O2N1cnNvcjpkZWZhdWx0Jz5TbGlkZQpTaG93PC9kaXY+CiA8ZGl2IGlkPSJuYl9zbGRzaHdCb3JkZXIiIHRpdGxlPSJGdWxsIFNjcmVlbiBTbGlkZSBTaG93IiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjAlO2xlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MjBweCc+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAxOHB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9ImJ1dHRvbnMuZ2lmIiBpZD0ibmJfc2xkc2h3IiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7bGVmdDotMjU0cHgnPjwvZGl2PgogPC9kaXY+CiA8L3RkPgogPHRkPgogPGRpdiBpZD0ibmJfdm9pY2VCb3JkZXIiIHN0eWxlPSdkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDotNDBweDsKIHdpZHRoOjIwcHg7aGVpZ2h0OjIwcHgnPgogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMThweCwgMThweCwgMHB4KSc+PGltZwogc3JjPSJidXR0b25zLmdpZiIgaWQ9Im5iX3ZvaWNlIiB0aXRsZT0iUGF1c2UvUGxheSBOYXJyYXRpb24iIHN0eWxlPSdwb3NpdGlvbjoKIHJlbGF0aXZlO2xlZnQ6LTI5MHB4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnIGFsaWduPWNlbnRlciBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPgogPGRpdiBpZD0ibmJfcHJldkJvcmRlciIgY2xhc3M9YnV0dG9uIHN0eWxlPSdsZWZ0Oi0zMHB4Jz4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDMwcHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl9wcmV2IiB0aXRsZT0iUHJldmlvdXMgU2xpZGUiIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTsKIGxlZnQ6MHB4Jz48L2Rpdj4KIDwvZGl2PgogPHNwYW4gaWQ9Im5hdl90ZXh0IiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7dG9wOjNweDt3aWR0aDoxMDBweDtmb250LWZhbWlseToKIEFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+PC9zcGFuPgogPGRpdiBpZD0ibmJfbmV4dEJvcmRlciIgY2xhc3M9YnV0dG9uPgogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMzBweCwgMThweCwgMHB4KSc+PGltZwogc3JjPSJidXR0b25zLmdpZiIgaWQ9Im5iX25leHQiIHRpdGxlPSJOZXh0IFNsaWRlIiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7CiBsZWZ0Oi05MHB4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IGlkPU90bE5hdk9iaiBvbmxvYWQ9IkxvYWQoKSIgb25tb3VzZW92ZXI9IkJ0bk9uT3ZlcigpIgpvbm1vdXNlZG93bj0iQnRuT25Eb3duKCkiIG9ubW91c2VvdXQ9IkJ0bk9uT3V0KCkiIG9ubW91c2V1cD0iQnRuT25VcCgpIgpvbmtleXByZXNzPSJfS1BIKCkiIHN0eWxlPSdkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW4nPgoKPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo3MHB4JyBhbGlnbj1sZWZ0IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KIDx0ZCBub3dyYXA+PGRpdiB0aXRsZT0iU2hvdy9IaWRlCk91dGxpbmUiIGlkPSJuYl9vdGwiCiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjAlO2xlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtjdXJzb3I6ZGVmYXVsdCc+CiA8ZGl2IGlkPSJuYl9vdGxFbGVtIiBhbGlnbj1jZW50ZXIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6M3B4O2ZvbnQtZmFtaWx5OkFyaWFsOwogY29sb3I6YnV0dG9udGV4dDtmb250LXNpemU6OXB0Jz5PdXRsaW5lPC9kaXY+PC9kaXY+CiA8L3RkPgo8L3RhYmxlPgoKPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZScgYWxpZ249Y2VudGVyIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KIDx0ZD4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTE4cHg7d2lkdGg6MjRweDtoZWlnaHQ6MjBweDtib3JkZXItc3R5bGU6CiBzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JvcmRlci1jb2xvcjp0aHJlZWRmYWNlJyBpZD0ibmJfb3RsVHh0Qm9yZGVyIj4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDIycHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz1idXR0b25zLmdpZiBpZD0ibmJfb3RsVHh0IiB0aXRsZT0iRXhwYW5kL0NvbGxhcHNlIE91dGxpbmUiCiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7bGVmdDotMTU3cHgnPjwvZGl2PgogPC9kaXY+CiA8L3RkPgo8L3RhYmxlPgoKPC9kaXY+Cgo8ZGl2IGlkPU90bE9iaiBzdHlsZT0nZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuOyc+CgoKPHRhYmxlIHdpZHRoPSIxMDAlIiBzdHlsZT0nZm9udC1mYW1pbHk6QXJpYWw7Zm9udC1zaXplOjlwdCc+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjE8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQgd2lkdGg9IjEwMCUiPgogIDxkaXYgaWQ9UFBUUDEgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAyOC5odG1sJyk7IiBpZD1QUFRMMT5XaGF0knMgTmV3IGluIFVNTDI/PC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPlNob3J0IFRhbGs8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPktlbm4gSHVzc2V5PC9saT4KICAgPGxpPklCTSBSYXRpb25hbCBTb2Z0d2FyZTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjI8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMiBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDI5Lmh0bWwnKTsiIGlkPVBQVEwyPkNvbnRlbnRzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMyIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPk92ZXJ2aWV3PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Hb2FsczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+Q2hhbGxlbmdlczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+U3RhdHVzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5NaWxlc3RvbmVzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT4yLjAgRGV2ZWxvcG1lbnQgUGxhbjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+SG93IENhbiBZb3UgSGVscD88L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4zPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDMgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAzMC5odG1sJyk7IiBpZD1QUFRMMz5PdmVydmlldzwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5BbiBFY2xpcHNlIE1vZGVsaW5nIERldmVsb3BtZW50IFRvb2xzIHN1YmNvbXBvbmVudCBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL21vZGVsaW5nL21kdC8/cHJvamVjdD11bWwyI3VtbDI8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFuIEVNRi1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVU1MmSAyLjEgbWV0YW1vZGVsIGZvciB0aGUgRWNsaXBzZQogICAgICAgcGxhdGZvcm08L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlByb2plY3QgbGVhZCBpcyBLZW5uIEh1c3NleSAoa2h1c3NleUBjYS5pYm0uY29tKTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VXNlcnMgaW5jbHVkZSBJQk0sIE9tb25kbywgTWV0YW1hdHJpeCwghTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RXN0aW1hdGVkIDg1LDAwMCBkb3dubG9hZHMgaW4gSmFudWFyeSAyMDA2PC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+NDwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFA0IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMzEuaHRtbCcpOyIgaWQ9UFBUTDQ+R29hbHM8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzQgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+UHJvdmlkZSBhIHVzZWFibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVNTCBtZXRhbW9kZWwgdG8gc3VwcG9ydCB0aGUKICAgICAgIGRldmVsb3BtZW50IG9mIG1vZGVsaW5nIHRvb2xzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Qcm92aWRlIGEgY29tbW9uIFhNSSBzY2hlbWEgdG8gZmFjaWxpdGF0ZSBpbnRlcmNoYW5nZSBvZiBzZW1hbnRpYyBtb2RlbHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlByb3ZpZGUgdGVzdCBjYXNlcyBhcyBhIG1lYW5zIG9mIHZhbGlkYXRpbmcgdGhlIHNwZWNpZmljYXRpb24gYW5kCiAgICAgICBpbXBsZW1lbnRhdGlvbjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UHJvdmlkZSB2YWxpZGF0aW9uIHJ1bGVzIGFzIGEgbWVhbnMgb2YgZGVmaW5pbmcgYW5kIGVuZm9yY2luZyBsZXZlbHMgb2YgY29tcGxpYW5jZTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjU8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDMyLmh0bWwnKTsiIGlkPVBQVEw1PkNoYWxsZW5nZXM8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzUgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+U2luY2UgdGhlIHNwZWNpZmljYXRpb24gaGFzIGJlZW4gYXQgdmFyaW91cyBzdGFnZXMgb2YgZmluYWxpemF0aW9uLCB0aGUKICAgICAgIEFQSSBoYXMgYmVlbiBhIG1vdmluZyB0YXJnZXQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFzcGVjdHMgb2YgdGhlIHN0YW5kYXJkIG1ldGFtb2RlbCAocmVkZWZpbml0aW9uLCBzdWJzZXRzL3N1cGVyc2V0cywKICAgICAgIHVuaW9ucykgbWFkZSB0aGUgbWFwcGluZyB0byBKYXZhmSBhbmQgWE1JIG5vbi10cml2aWFsPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5UaGVyZSB3ZXJlIGEgbnVtYmVyIG9mIGVycm9ycyBpbiB0aGUgc3BlY2lmaWNhdGlvbiB3aGljaCwgdW50aWwgZml4ZWQsCiAgICAgICBtYWRlIHRoZSBBUEkgYW5kIFhNSSBzY2hlbWEgZGlmZmljdWx0IHRvIHVzZTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+Q29tcGxpYW5jZSBwb2ludHMgZm9yIFVNTCBhcmUgYSBzdWJqZWN0IG9mIGRlYmF0ZSB3aXRoaW4gdGhlIG1vZGVsaW5nCiAgICAgICBjb21tdW5pdHk8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj42PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDYgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAzMy5odG1sJyk7IiBpZD1QUFRMNj5TdGF0dXMgliBNZXRhbW9kZWw8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzYgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+RU1GLWdlbmVyYXRlZCBBUEkgYmFzZWQgb24gYSBtZXJnZWQgdmVyc2lvbiBvZiB0aGUgbWV0YW1vZGVsIGluIHdoaWNoCiAgICAgICBwYWNrYWdlIG1lcmdlcyBhbmQgbW9zdCByZWRlZmluaXRpb25zIGhhdmUgYmVlbiBmYWN0b3JlZCBvdXQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkluY2x1ZGVzIG1lY2hhbmlzbXMgdG8gc3VwcG9ydCBkZXJpdmVkIHVuaW9uLCByZWRlZmluZXMsIGFuZCBzdWJzZXRzCiAgICAgICBjb25zdHJhaW50czwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+R2VuZXJhdGVkIHVzaW5nIGN1c3RvbWl6ZWQgY29kZSBnZW5lcmF0b3IgYW5kIEpFVCB0ZW1wbGF0ZXM8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj43PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDcgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAzNC5odG1sJyk7IiBpZD1QUFRMNz5TdGF0dXMgliBJbnRlcmNoYW5nZTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDNyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5EZWZhdWx0IFhNSSBzY2hlbWEgZ2VuZXJhdGVkIHVzaW5nIEVNRjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RGVmaW5lcyBvbmUgbmFtZXNwYWNlIChodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MKSBmb3IgYWxsCiAgICAgICBlbGVtZW50cywgdGh1cyBzdXBwb3J0aW5nIGludGVyY2hhbmdlPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5FbGVtZW50cyBpZGVudGlmaWVkIHVzaW5nIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVycyAoVVVJRHMpPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5XaWxsIHN1cHBvcnQgaW1wb3J0L2V4cG9ydCBmcm9tL3RvIE9NRyBYTUkgZm9yIFVNTCBvbmNlIHRoZSAyLjEKICAgICAgIHNwZWNpZmljYXRpb24gaXMgZmluYWxpemVkPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+ODwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFA4IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMzUuaHRtbCcpOyIgaWQ9UFBUTDg+U3RhdHVzIJYgU3BlY2lmaWNhdGlvbjwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDOCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5FcnJvcnMgZGlzY292ZXJlZCB3aGlsZSBkZXZlbG9waW5nIHRoZSBBUEkgYW5kIFhNSSBzY2hlbWEgd2VyZSBmaXhlZCBhbmQKICAgICAgIHN1Ym1pdHRlZCBhcyBpc3N1ZXMgdG8gdGhlIFVNTCAyLjEgU3VwZXJzdHJ1Y3R1cmUgYW5kIEluZnJhc3RydWN0dXJlCiAgICAgICBSZXZpc2lvbiBUYXNrIEZvcmNlIChSVEYpPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5VTUwgMi4xIFN1cGVyc3RydWN0dXJlIGFuZCBJbmZyYXN0cnVjdHVyZSBSVEYgaGFzIGRlbGl2ZXJlZCBmaW5hbCBkcmFmdAogICAgICAgYW5kIHJlcG9ydCB0byBPTUc8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlJlbGVhc2UgZGF0ZSBmb3IgVU1MIDIuMSBTcGVjaWZpY2F0aW9uIGlzIFRCRCAoc29vbiEpPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5VTUwgMi4yIFN1cGVyc3RydWN0dXJlIGFuZCBJbmZyYXN0cnVjdHVyZSBSVEYgaXMgYmVpbmcgY2hhcnRlcmVkIJYgb3BlbgogICAgICAgaXNzdWVzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9tZy5vcmcvaXNzdWVzL3VtbDItcnRmLm9wZW4uaHRtbDwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjk8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQOSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDM2Lmh0bWwnKTsiIGlkPVBQVEw5PlN0YXR1cyCWIENvbXBsaWFuY2U8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzkgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VmFsaWRhdGlvbiBydWxlcyBldmFsdWF0ZWQgdXNpbmcgRU1GIHZhbGlkYXRvciBtZWNoYW5pc208L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlZhbGlkYXRvcnMgaW1wbGVtZW50ZWQgYmFzZWQgb24gc2V0cyBvZiBPQ0wgY29uc3RyYWludHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkNvcnJlc3BvbmQgdG8gY29tcGxpYW5jZSBsZXZlbHM8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xMDwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAxMCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDM3Lmh0bWwnKTsiIGlkPVBQVEwxMD5NaWxlc3RvbmVzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxMCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT4yMDA0PC9saT4KICAgPHVsPgogICAgPGxpPkp1bmUgliAxLjA8L2xpPgogICAgPGxpPlNlcHRlbWJlciCWIDEuMC4xPC9saT4KICAgPC91bD4KICAgPGxpPjIwMDU8L2xpPgogICA8dWw+CiAgICA8bGk+TWFyY2ggliAxLjAuMjwvbGk+CiAgICA8bGk+SnVuZSCWIDEuMC4zPC9saT4KICAgIDxsaT5KdWx5IJYgMS4xLjA8L2xpPgogICAgPGxpPlNlcHRlbWJlciCWIDEuMS4xPC9saT4KICAgPC91bD4KICAgPGxpPjIwMDY8L2xpPgogICA8dWw+CiAgICA8bGk+SnVuZSCWIDIuMDwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjExPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDExIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMzguaHRtbCcpOyIgaWQ9UFBUTDExPjIuMCBEZXZlbG9wbWVudCBQbGFuPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxMSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5UaGVtZTogUmVsZWFzZSBDdXJyZW5jeTwvbGk+CiAgIDx1bD4KICAgIDxsaT5FY2xpcHNlIDMuMiAvIEVNRiAyLjIgQ29tcGF0aWJpbGl0eTwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPlRoZW1lOiBDb21wbGV0ZW5lc3M8L2xpPgogICA8dWw+CiAgICA8bGk+VU1MIDIuMSBDb25mb3JtYW5jZTwvbGk+CiAgICA8bGk+VU1MIDIuMSBJbnRlcmNoYW5nZTwvbGk+CiAgICA8bGk+VU1MMiAyLjAgTWlncmF0aW9uPC9saT4KICAgIDxsaT5WYWxpZGF0aW9uIFJ1bGVzPC9saT4KICAgIDxsaT5Vbml0IFRlc3RzPC9saT4KICAgIDxsaT5PQ0wgU3VwcG9ydDwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjEyPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDEyIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNDAuaHRtbCcpOyIgaWQ9UFBUTDEyPjIuMCBEZXZlbG9wbWVudCBQbGFuPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxMiBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5UaGVtZTogQnVpbHQgdG8gTGFzdDwvbGk+CiAgIDx1bD4KICAgIDxsaT5SZWR1Y2VkIE1lbW9yeSBGb290cHJpbnQ8L2xpPgogICA8L3VsPgogICA8YnI+CiAgIDxsaT5UaGVtZTogU2ltcGxlIHRvIFVzZTwvbGk+CiAgIDx1bD4KICAgIDxsaT5JbXByb3ZlZCBDb252ZW5pZW5jZSBNZXRob2RzPC9saT4KICAgIDxsaT5JbXByb3ZlZCBEb2N1bWVudGF0aW9uPC9saT4KICAgIDxsaT5FbmhhbmNlZCBJY29uczwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPlRoZW1lOiBCcm9hZGVuaW5nIHRoZSBDb21tdW5pdHk8L2xpPgogICA8dWw+CiAgICA8bGk+VG9vbHM8L2xpPgogICA8L3VsPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xMzwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAxMyBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDM5Lmh0bWwnKTsiIGlkPVBQVEwxMz5Ib3cgQ2FuIFlvdSBIZWxwPzwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTMgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+RGV2ZWxvcCB0b29scyBiYXNlZCBvbiBVTUwyPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5SZXBvcnQgYnVnczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UGFydGljaXBhdGUgaW4gbmV3c2dyb3VwIGRpc2N1c3Npb25zPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Xcml0ZSBhcnRpY2xlczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+QmVjb21lIGEgVU1MMiBjb250cmlidXRvciE8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xNDwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAxNCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDQxLmh0bWwnKTsiIGlkPVBQVEwxND5MZWdhbCBOb3RpY2VzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxNCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5VTUwgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIE9iamVjdCBNYW5hZ2VtZW50IEdyb3VwPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsCiAgICAgICBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGg8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPk90aGVyIGNvbXBhbnksIHByb2R1Y3QsIG9yIHNlcnZpY2UgbmFtZXMgbWF5IGJlIHRyYWRlbWFya3Mgb3Igc2VydmljZQogICAgICAgbWFya3Mgb2Ygb3RoZXJzPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KPC90YWJsZT4KCgoKPC9kaXY+Cgo8ZGl2IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxhIGhyZWY9bWFzdGVyMDguaHRtbD48L2E+PGEgaHJlZj1tYXN0ZXIwOC54bWw+PC9hPjxhCmhyZWY9cHJldmlldy53bWY+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDAxLmpwZyI+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDAyLmpwZyI+PC9hPjxhIGhyZWY9bWFzdGVyMDkuaHRtbD48L2E+PGEKaHJlZj1tYXN0ZXIwOS54bWw+PC9hPjxhIGhyZWY9bWFzdGVyMDIuaHRtbD48L2E+PGEgaHJlZj1wcmVzLnhtbD48L2E+PGEKaHJlZj1lZGl0ZGF0YS5tc28+PC9hPjxhIGhyZWY9c2xpZGUwMDI4Lmh0bWw+PC9hPjxhIGhyZWY9Im1hc3RlcjA5X2ltYWdlMDAzLmpwZyI+PC9hPjxhCmhyZWY9Im1hc3RlcjA5X2ltYWdlMDA0LmpwZyI+PC9hPjxhIGhyZWY9c2xpZGUwMDI5Lmh0bWw+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDA1LmpwZyI+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDA2LmdpZiI+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDA3LmpwZyI+PC9hPjxhIGhyZWY9c2xpZGUwMDMwLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDMxLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDMyLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDMzLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDM0Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDM1Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDM2Lmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDM3Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDM4Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDQwLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDM5Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDQxLmh0bWw+PC9hPjxhIGhyZWY9bWFzdGVyMDEuaHRtbD48L2E+PGEKaHJlZj0ibWFzdGVyMDhfc3R5bGVzaGVldC5jc3MiPjwvYT48YSBocmVmPXNjcmlwdC5qcz48L2E+PGEKaHJlZj0iLi4vRWNsaXBzZUNvbjIwMDZfU2hvcnRUYWxrLmh0bWwiPjwvYT48YSBocmVmPWZ1bGxzY3JlZW4uaHRtbD48L2E+PGEKaHJlZj1idXR0b25zLmdpZj48L2E+PGEgaHJlZj1mcmFtZS5odG1sPjwvYT48YSBocmVmPW91dGxpbmUuaHRtbD48L2E+PC9kaXY+Cgo8L2JvZHk+Cgo8L2h0bWw+Cg==