my-orders-tickets-widget 1.0.0-beta.11 → 1.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3162,6 +3162,8 @@ const TicketForm = _ref => {
|
|
|
3162
3162
|
initialValues: parseAnswers(ticket.owner, extraQuestions, answers, ticketManager, allowsDelegation),
|
|
3163
3163
|
validationSchema: buildValidationSchema(extraQuestions, allowsDelegation, summit.registration_disclaimer_mandatory),
|
|
3164
3164
|
onSubmit: values => {
|
|
3165
|
+
debugger;
|
|
3166
|
+
console.log("TicketForm::onSubmit", values);
|
|
3165
3167
|
const relevantAnswers = parseAnswers(extraQuestions, values, ticketManager, allowsDelegation, true);
|
|
3166
3168
|
onSubmit(relevantAnswers);
|
|
3167
3169
|
},
|
|
@@ -4918,4 +4920,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
4918
4920
|
/******/ })()
|
|
4919
4921
|
;
|
|
4920
4922
|
});
|
|
4921
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0RhdGVwaWNrZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERlbGVnYXRpb25GaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGdldFJlcXVlc3QsXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGNyZWF0ZUFjdGlvbixcbiAgc3RvcExvYWRpbmcsXG4gIHN0YXJ0TG9hZGluZyxcbiAgcHV0UmVxdWVzdFxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIEZJUlNUX1BBR0UsXG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIE9ORV9QQUdFX05FWFRcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUUyA9IFwiR0VUX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIvU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfVtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9PUAke2ZpbHRlck9iai52YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PlxuICBkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiO1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fSxcbiAgICBuZXh0ID0gZmFsc2VcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlOiBuZXh0ID8gcGFnZSArIE9ORV9QQUdFX05FWFQgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlcik7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQcm9maWxlID1cbiAgKHByb2ZpbGUpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBpZHBCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSkoKSk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX0lEUF9QUk9GSUxFKSxcbiAgICAgIC8vIFRPRE86IG5lZWQgSURQX0JBU0VfVVJMXG4gICAgICBgJHtpZHBCYXNlVXJsfS9hcGkvdjEvdXNlcnMvbWVgLFxuICAgICAgcHJvZmlsZSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4gcGF5bG9hZClcbiAgICAgIC5jYXRjaCgoKSA9PiBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFKSgpKSk7XG4gIH07XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7IHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHVzZXJTdGF0ZTogeyB1c2VyUHJvZmlsZSB9LFxuICAgICAgc3VtbWl0XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBpZiAoIXVzZXJQcm9maWxlLmlkKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGZpbHRlcjogXCJzdGF0dXM9PVBhaWRcIixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvcmRlci5pZCxvcmRlci5vd25lcl9maXJzdF9uYW1lLG9yZGVyLm93bmVyX2xhc3RfbmFtZSxvcmRlci5vd25lcl9lbWFpbCxvd25lci5maXJzdF9uYW1lLG93bmVyLmxhc3RfbmFtZSxvd25lci5zdGF0dXNcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHsgb3JkZXJJZCwgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIG9yZGVyU3RhdGU6IHsgY3VycmVudF9wYWdlOiBvcmRlclBhZ2UgfSxcbiAgICAgIHRpY2tldFN0YXRlOiB7IGN1cnJlbnRfcGFnZTogdGlja2V0UGFnZSB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuXG4gICAgICAgIGlmICh0aWNrZXQub3JkZXJfaWQpIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyT3JkZXJzKHsgcGFnZTogb3JkZXJQYWdlIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyVGlja2V0cyh7IHBhZ2U6IHRpY2tldFBhZ2UgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICB9O1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFN1bW1pdCA9IChzdW1taXQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVU1NSVQpKHN1bW1pdCkpO1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7XG4gICAgICAgIHN1bW1pdCxcbiAgICAgICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gICAgICB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiAyMCxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7dXNlclByb2ZpbGUuYXR0ZW5kZWVfaWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQWRhcHRlckRheWpzIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Qcm92aWRlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9EQVRFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RhdGVQaWNrZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgY29uc3QgW2RhdGVWYWx1ZSwgc2V0RGF0ZVZhbHVlXSA9IHVzZVN0YXRlKG5vdyk7XG4gIGNvbnN0IG9uRGF0ZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBzZXREYXRlVmFsdWUodmFsKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsLiRkKTtcbiAgICBjb25zdCB7IGxvd2VyLCB1cHBlciB9ID0gZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzKGRhdGUpO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIHR5cGU6IEZJTFRFUl9WQVJfREFURSxcbiAgICAgIG5hbWU6IFwiY3JlYXRlZFwiLFxuICAgICAgZGF0ZSxcbiAgICAgIGxvd2VyLFxuICAgICAgdXBwZXJcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgb25SZXNldEFjdGlvbiA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgc2V0RGF0ZVZhbHVlKG5vdyk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyRGF0ZUxhYmVsfT57dChcImZpbHRlci5wdXJjaGFzZWRfb25cIil9PC9kaXY+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlUGlja2VyQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZXBpY2tlckNsb3NlfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVzZXRBY3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxMb2NhbGl6YXRpb25Qcm92aWRlciBkYXRlQWRhcHRlcj17QWRhcHRlckRheWpzfT5cbiAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FsZW5kYXJEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uRGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Mb2NhbGl6YXRpb25Qcm92aWRlcj5cbiAgICAgIDwvU3RhY2s+XG4gICAgPC8+XG4gICk7XG59XG5cbkJhc2ljRGF0ZVBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IEJhc2ljRGF0ZVBpY2tlciBmcm9tIFwiLi9EYXRlcGlja2VyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICB7LyoqIGN1cnJlbnRseSBqdXN0IHNob3dpbmcgXCIxXCIgYmVjYXVzZSB3ZSdyZSBjdXJyZW50bHkgb25seSBmaWx0ZXJpbmcgb25lIGNyaXRlcmlhIC0gY3JlYXRlZCBkYXRlICovfVxuICAgICAgICB7ZmlsdGVyTnVtQWN0aXZlICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTnVtQWN0aXZlfT4xPC9kaXY+fVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RGF0ZVBpY2tlciA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxCYXNpY0RhdGVQaWNrZXJcbiAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XG4gICAgICAgICAgICBvblJlc2V0KCk7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoZmFsc2UpO1xuICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgb25GaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZSh0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuZnVuY3Rpb24gU2VhcmNoKHsgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbmFtZTogXCJudW1iZXJcIixcbiAgICAgICAgdHlwZTogRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgICBvblJlc2V0KCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gU29ydCh7IG9uU29ydCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH0+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiZGVzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImFzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXJTb3J0U2VhcmNoKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICByZXR1cm4gKFxuICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIHhzPXs2fVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgZ2FwPXsyfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbkZpbHRlclNvcnRTZWFyY2gucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlclNvcnRTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBGaWx0ZXJTb3J0U2VhcmNoIGZyb20gXCIuL0ZpbHRlclNvcnRTZWFyY2hcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRVc2VyT3JkZXJzLCByZXNldEZpbHRlciB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE15T3JkZXJzVGlja2V0cygpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBtZW1iZXJPcmRlcnMsXG4gICAgb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgb3JkZXJzX3RvdGFsXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBbaGFzTW9yZSwgc2V0SGFzTW9yZV0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW3NlYXJjaE5leHQsIHNldFNlYXJjaE5leHRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbc29ydCwgc2V0U29ydF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNlYXJjaE5leHQoZmFsc2UpO1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlOiBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHNlYXJjaE5leHQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApLnRoZW4oKHJlcykgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZXMucmVzcG9uc2U/LmRhdGE/Lmxlbmd0aCA+IG9yZGVyc19wZXJfcGFnZSAmJlxuICAgICAgICBtZW1iZXJPcmRlcnMubGVuZ3RoID09PSBvcmRlcnNfdG90YWxcbiAgICAgIClcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEoKTtcbiAgfSwgW2ZpbHRlciwgc29ydCwgc2VhcmNoTmV4dF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVzZXIgJiYgc3VtbWl0KSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucygpKTtcbiAgICB9XG4gIH0sIFt1c2VyLCBzdW1taXRdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXIpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoZmlsdGVyKTtcbiAgfTtcbiAgY29uc3Qgb25Tb3J0ID0gKGRpcmVjdGlvbikgPT4ge1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U29ydCh7IGRpcmVjdGlvbiwgbmFtZTogXCJjcmVhdGVkXCIgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEZpbHRlclNvcnRTZWFyY2hcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L0JveD5cbiAgICAgIHttZW1iZXJPcmRlcnMubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnMubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IHNldFNlYXJjaE5leHQodHJ1ZSl9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdCBrZXk9e29yZGVyLmlkfSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT57dChcIm9yZGVycy5ub19vcmRlcnNcIil9PC9Cb3g+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnlUYWJsZSh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZGlzY291bnRUb3RhbCwgcmVmdW5kVG90YWwsIHRheGVzVG90YWwsIGFtb3VudFRvdGFsLCB0aWNrZXRTdW1tYXJ5IH0gPVxuICAgIGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KTtcbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFJlZnVuZEVtYWlsU3VwcG9ydCh7XG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25FbWFpbFN1cHBvcnRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJTdW1tYXJ5KHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfSBzeD17eyBwdDogNCwgcHg6IDQgfX0+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17KCkgPT4ge319XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4ge319XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHsgdGlja2V0cywgdG90YWwsIG9uUGFnaW5hdGVDbGljaywgc3VtbWl0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0cyBrZXk9e3RpY2tldC5pZH0gdGlja2V0PXt0aWNrZXR9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgKSl9XG4gICAgICB7dGlja2V0cz8ubGVuZ3RoID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259IG9uQ2xpY2s9e29uVmlld01vcmV9PlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IHRvdGFsID8gKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufSBvbkNsaWNrPXtvblZpZXdMZXNzfT5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlLCB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufT5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn0gb25DbGljaz17b25PcGVuQ2xpY2t9PlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHsgdGlja2V0LCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBbb3BlblRpY2tldCwgc2V0T3BlblRpY2tldF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgeyBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZCBrZXk9e3RpY2tldC5pZH0gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfSBjb250YWluZXI+XG4gICAgICA8R3JpZCB4cz17N30gcGFkZGluZz17Mn0gaXRlbSBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfT5cbiAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXs1fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogMiwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWwgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9Pnt0aWNrZXQub3duZXI/LmVtYWlsfTwvQm94PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIHRpY2tldC5pc19hY3RpdmUgJiYgKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApXG4gICAgICAgICl9XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwicm93XCIgeHM9ezEyfSBsZz17Nn0gYWxpZ25JdGVtcz1cImNlbnRlclwiIGl0ZW0+XG4gICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBwYWRkaW5nPXsyfSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGV9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9eygpID0+IHNldE9wZW5UaWNrZXQodGlja2V0KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXQ9e29wZW5UaWNrZXR9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5UaWNrZXQobnVsbCl9XG4gICAgICAvPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5mdW5jdGlvbiBPcmRlck51bWJlcih7XG4gIG51bWJlcixcbiAgY29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSBmYWxzZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMub3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXROb0NvbnRhaW5lcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7bnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAge2NvcHkgJiYgKFxuICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobnVtYmVyKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk9yZGVyTnVtYmVyLnByb3BUeXBlcyA9IHtcbiAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJOdW1iZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFRhYlBhbmVsKHByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgb3JkZXIsXG4gIHRvdGFsLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmRldGFpbHNSZXF1aXJlZExhYmVsfT5cbiAgICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvcjogXCIjRkY5ODAwXCIgfX0gLz5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgdGV4dENvbG9yPVwiIzAwMFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgICBUYWJJbmRpY2F0b3JQcm9wcz17e1xuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5IG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IHRpY2tldHM9e3RpY2tldHN9IC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsyfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSB0aWNrZXRzPXt0aWNrZXRzfSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldE9yZGVyVGlja2V0cywgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3QocHJvcHMpIHtcbiAgY29uc3QgeyBzdW1taXQsIG9yZGVyIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgcGVyX3BhZ2UsIGxhc3RfcGFnZSwgbWVtYmVyT3JkZXJzIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuICBjb25zdCBmZXRjaFRpY2tldHNCeU9yZGVyID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgY3VycmVudF9wYWdlOiBsYXN0X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlXG4gICAgICB9KVxuICAgICkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hUaWNrZXRzQnlPcmRlcigpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMSxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb30+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17b3JkZXIubnVtYmVyfSBjb3B5IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17Z2V0T3JkZXJUaWNrZXRzKG1lbWJlck9yZGVycywgb3JkZXIuaWQpfVxuICAgICAgICAgIHRvdGFsPXtvcmRlci50aWNrZXRzX3RvdGFsfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRWYWx1ZSB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU/Lm5hbWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCwgY2hpbGRyZW4pID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIGlmICghcnVsZVJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgaWYgKCFydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gdGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufVxuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzID0gKHsgZm9ybWlrIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2ZpcnN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9sYXN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwubGFzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZWxlZ2F0aW9uRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERlbGVnYXRpb25GaWVsZHM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmcm9tIFwiLi4vVGlja2V0RGVsZWdhdGlvbkZpZWxkc1wiO1xuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbGxvd3NEZWxlZ2F0aW9uLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGVtYWlsXCIpXG4gICAgICAuZW1haWwoXCJFbWFpbCBpbnZhbGlkXCIpXG4gICAgICAucmVxdWlyZWQoXCJFbWFpbCBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGNvbXBhbnlcIilcbiAgICAgIC5yZXF1aXJlZChcIkNvbXBhbnkgaXMgcmVxdWlyZWRcIilcbiAgfTtcblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBcIkZpZWxkIG11c3QgYmUgY2hlY2tlZFwiKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoXCJUaGlzIHF1ZXN0aW9uIGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG4vLyBvbiBmb3JtaWsgd2UgbmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJxdWVzdGlvbnMgd2l0aCBhIHZhbHVlXG4vLyBvbiBzdWJtaXQsIHdlIG9ubHkgbmVlZCByZWxldmFudCBhbnN3ZXJzXG5jb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgbWFuYWdlcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06IG93bmVyLmVtYWlsLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdOiBvd25lci5maXJzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV06IG93bmVyLmxhc3RfbmFtZSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV06IG93bmVyLmNvbXBhbnksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF06IG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWRcbiAgfTtcblxuICBpZiAoYWxsb3dzRGVsZWdhdGlvbikge1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSBtYW5hZ2VyPy5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0gbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhydWxlLnN1Yl9xdWVzdGlvbi5uYW1lKTtcbiAgICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paykgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgc3VibWl0Q291bnQgfSA9IGZvcm1paztcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQXJyYXkubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3JBcnJheVswXX0nXWApO1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xuICAgIC8vIFNjcm9sbCB0byBmaXJzdCBrbm93biBlcnJvciBpbnRvIHZpZXdcbiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6IFwic21vb3RoXCIsIGJsb2NrOiBcImNlbnRlclwiIH0pO1xuICB9LCBbc3VibWl0Q291bnRdKTtcbn07XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdGlja2V0TWFuYWdlciA9IHRpY2tldD8ubWFuYWdlcjtcbiAgLyogRElTQUJMRSBERUxFR0FUSU9OIEZUTSAqL1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0aW9uID0gdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlICYmIGZhbHNlO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7IHN1bW1pdCwgdGlja2V0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9LFxuICAgIGV4dHJhUXVlc3Rpb25zXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXIub3duZXJfaWQgPT09IHVzZXJQcm9maWxlLmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZS5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJTQVZFOiBcIiwgdmFsKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEcmF3ZXJcbiAgICAgIG9wZW49eyEhdGlja2V0fVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IFwiYXV0b1wiLCBtYXhXaWR0aDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuXG4gICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnNlbmRCdG59PlxuICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgIDxPcmRlck51bWJlclxuICAgICAgICAgICAgbnVtYmVyPXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICBjb3B5XG4gICAgICAgICAgICB0cnVuY2F0ZWRcbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICA8L0RyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUaWNrZXRTdGF0dXMoeyB0aWNrZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kX3JlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB0aWNrZXRfc3RhdHVzX2luY29tcGxldGUgPSB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCI7XG4gIGNvbnN0IHRpY2tldF91bmFzc2lnbmVkID0gdGlja2V0Lm93bmVyX2lkID09PSAwO1xuICBjb25zdCB0aWNrZXRfY29tcGxldGUgPSB0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIjtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kX3JlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRfcmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPVxuICAgIHRpY2tldC5maW5hbF9hbW91bnQgPiAwICYmIHRpY2tldC5maW5hbF9hbW91bnQgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50O1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldC50aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgc3RhdHVzICE9PSBTVEFUVVNfVU5BU1NJR05FRCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGVcbiAgfTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1VNTUlULFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgaXNPcmRlckxvYWRpbmc6IGZhbHNlLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAxLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMSxcbiAgdGlja2V0X2xhc3RfcGFnZTogMSxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDBcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1VNTUlUOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHN1bW1pdDogcGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4ubWVtYmVyT3JkZXJzLCAuLi5kYXRhXSxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyLmlkKTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7Li4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhfVxuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoeyBjbGllbnRJZCwgbG9naW5VcmwsIHN1bW1pdCwgYXBpQmFzZVVybCB9KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdlOjogZ2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSAzO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgT05FX0RBWVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQgfHwgIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCB0YXhlc19hbW91bnQsIGFtb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzLmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCB0YXhlc1RvdGFsID0gZm9ybWF0Q3VycmVuY3kodGF4ZXNfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgdGF4ZXNUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19Sb2ltUlwiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19vb0kwVlwiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19pbV9qaFwiO1xudmFyIF80ID0gXCJjb250YWluZXJfX19OM1k0WFwiO1xudmFyIF81ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fSlcybE9cIjtcbnZhciBfNiA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVjlnSENcIjtcbnZhciBfNyA9IFwiZmlsdGVyQ29udGFpbmVyX19fckdwWVZcIjtcbnZhciBfOCA9IFwiZmlsdGVyRGF0ZUxhYmVsX19faWZENHBcIjtcbnZhciBfOSA9IFwiZmlsdGVySWNvbl9fX2wyMUtJXCI7XG52YXIgX2EgPSBcImZpbHRlckxhYmVsX19fX1Awd25cIjtcbnZhciBfYiA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX1ZtZEdxXCI7XG52YXIgX2MgPSBcImZpbHRlck51bUFjdGl2ZV9fX1Z1SENKXCI7XG52YXIgX2QgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19hckJ2UVwiO1xudmFyIF9lID0gXCJsYWJlbF9fX3lORnlqXCI7XG52YXIgX2YgPSBcInNob3dEYXRlUGlja2VyX19fVXBRYnBcIjtcbnZhciBfMTAgPSBcInNvcnRDb250YWluZXJfX19sUnNqVVwiO1xudmFyIF8xMSA9IFwic29ydEljb25fX19mVlY1S1wiO1xudmFyIF8xMiA9IFwic29ydExhYmVsX19fVXFMVENcIjtcbnZhciBfMTMgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fY21uQkRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNvbnRhaW5lclwiLCBfNSBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzYgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzcgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgXzggYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgXzkgYXMgXCJmaWx0ZXJJY29uXCIsIF9hIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9jIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9kIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfZSBhcyBcImxhYmVsXCIsIF9mIGFzIFwic2hvd0RhdGVQaWNrZXJcIiwgXzEwIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTEgYXMgXCJzb3J0SWNvblwiLCBfMTIgYXMgXCJzb3J0TGFiZWxcIiwgXzEzIGFzIFwic29ydExpc3RDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyT3JkZXJOdW1iZXJfX19ScUNiQ1wiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkTnVtYmVyX19fcHF5X0lcIjtcbnZhciBfNyA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF84ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyT3JkZXJOdW1iZXJcIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkTnVtYmVyXCIsIF83IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzggYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfMyA9IFwiY29weUljb25fX19Oa0hHT1wiO1xudmFyIF80ID0gXCJkZXRhaWxzUmVxdWlyZWRMYWJlbF9fX1kya29yXCI7XG52YXIgXzUgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgXzYgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfNyA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF84ID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF85ID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldE5vQ29udGFpbmVyX19fdnFvaE5cIjtcbnZhciBfYiA9IFwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWRfX19IWG1kd1wiO1xudmFyIF9jID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF9kID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgX2UgPSBcInJldmVyc2VkX19fREZlYV9cIjtcbnZhciBfZiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTEgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMiA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMyA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTUgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJibGFja0J1dHRvblwiLCBfMyBhcyBcImNvcHlJY29uXCIsIF80IGFzIFwiZGV0YWlsc1JlcXVpcmVkTGFiZWxcIiwgXzUgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzYgYXMgXCJsYWJlbFwiLCBfNyBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF84IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF85IGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9hIGFzIFwib3JkZXJUaWNrZXROb0NvbnRhaW5lclwiLCBfYiBhcyBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkXCIsIF9jIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9kIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2UgYXMgXCJyZXZlcnNlZFwiLCBfZiBhcyBcInRhYkJ1dHRvbnNcIiwgXzEwIGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTEgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xMiBhcyBcInRpY2tldE5vXCIsIF8xMyBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzE0IGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMTUgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xNiBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2FuY2VsQnRuX19fZ2dDZGpcIjtcbnZhciBfNiA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF83ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfOCA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF85ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgX2EgPSBcImZvb3Rlcl9fX05JTTdkXCI7XG52YXIgX2IgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2MgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfZCA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfZSA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZiA9IFwic2F2ZUJ0bl9fX05wT0VWXCI7XG52YXIgXzEwID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfMTEgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzEzID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xNCA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2FuY2VsQnRuXCIsIF82IGFzIFwiY2xvc2VCdG5cIiwgXzcgYXMgXCJjb3B5QnRuXCIsIF84IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzkgYXMgXCJkb3dubG9hZEJ0blwiLCBfYSBhcyBcImZvb3RlclwiLCBfYiBhcyBcImhlYWRlclwiLCBfYyBhcyBcIm9yZGVyTnVtYmVyXCIsIF9kIGFzIFwicXJDb2RlXCIsIF9lIGFzIFwicXJOb3RlXCIsIF9mIGFzIFwic2F2ZUJ0blwiLCBfMTAgYXMgXCJzZW5kQnRuXCIsIF8xMSBhcyBcInN0YXR1c1wiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzE0IGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi9jb21wb25lbnRzL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFN1bW1pdCwgc2V0VXNlciB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBsb2dpblVybCwgc3VwcG9ydEVtYWlsLCBzdW1taXQsIGFwaUJhc2VVcmwsIHVzZXIsIGNsaWVudElkIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRTdW1taXQoc3VtbWl0KSk7XG4gIH0sIFtzdW1taXRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFVzZXIodXNlcikpO1xuICB9LCBbdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcnMudGl0bGVcIil9PC9oMz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxNeU9yZGVyc1RpY2tldHNcbiAgICAgICAgICBsb2dpblVybD17bG9naW5Vcmx9XG4gICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgYXBpQmFzZVVybD17YXBpQmFzZVVybH1cbiAgICAgICAgLz5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiZ2V0UmVxdWVzdCIsImRlbGV0ZVJlcXVlc3QiLCJjcmVhdGVBY3Rpb24iLCJzdG9wTG9hZGluZyIsInN0YXJ0TG9hZGluZyIsInB1dFJlcXVlc3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiQVNTSUdOX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlciIsInR5cGUiLCJwdXNoIiwibmFtZSIsImxvd2VyIiwidXBwZXIiLCJ2YWx1ZSIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRVc2VyT3JkZXJzIiwiX3JlZiIsInBhZ2UiLCJwZXJQYWdlIiwic29ydCIsIm5leHQiLCJnZXRTdGF0ZSIsIl9yZWYyIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwic3VtbWl0IiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImZpbHRlcnMiLCJpZCIsInRoZW4iLCJwYXlsb2FkIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsInVzZXIiLCJ1cGRhdGVQcm9maWxlIiwicHJvZmlsZSIsIl9yZWYzIiwiaWRwQmFzZVVybCIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJTdGF0ZSIsInVzZXJQcm9maWxlIiwiZXhwYW5kIiwiZmllbGRzIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsIm9yZGVyU3RhdGUiLCJjdXJyZW50X3BhZ2UiLCJvcmRlclBhZ2UiLCJ0aWNrZXRTdGF0ZSIsInRpY2tldFBhZ2UiLCJzZXRTdW1taXQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxMSIsImVuZHBvaW50IiwiYXR0ZW5kZWVfaWQiLCJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiU3RhY2siLCJ1c2VUcmFuc2xhdGlvbiIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0IiwidCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsInZhbCIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwib25DbGljayIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5Iiwib25DaGFuZ2UiLCJwcm9wVHlwZXMiLCJmdW5jIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJCb3giLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsImtleSIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwibGFiZWwiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsInNlYXJjaE5leHQiLCJzZXRTZWFyY2hOZXh0Iiwic2V0RmlsdGVyIiwic2V0U29ydCIsImZldGNoRGF0YSIsInJlcyIsInJlc3BvbnNlIiwiZGF0YSIsIndpZGdldEhlYWRlciIsIm1kIiwibGciLCJzdW1taXRUaXRsZURhdGUiLCJkYXRhTGVuZ3RoIiwic2Nyb2xsVGhyZXNob2xkIiwibWFwIiwibm9PcmRlcnNGb3VuZCIsIkRpdmlkZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRzIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm51bWJlciIsIm9iamVjdCIsImFycmF5T2YiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJvcmRlclN1bW1hcnlCdXR0b24iLCJ2YXJpYW50Iiwic2l6ZSIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJPcmRlck51bWJlciIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsInVzZU5vdyIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIm9wZW5UaWNrZXQiLCJzZXRPcGVuVGlja2V0IiwicmVhc3NpZ25EYXRlIiwib3JkZXJXcmFwcGVyIiwidGlja2V0VGlja2V0VHlwZSIsIm93bmVyIiwidGlja2V0T3duZXJFbWFpbCIsImlzX2FjdGl2ZSIsInRpY2tldE5vIiwiY29weSIsInRydW5jYXRlZCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvbkNsb3NlIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwiZGVmYXVsdFdpZHRoIiwicmV2ZXJzZWQiLCJjbGFzc05hbWVzIiwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWQiLCJvcmRlclRpY2tldE5vQ29udGFpbmVyIiwic3R5bGUiLCJjb3B5SWNvbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsImJvb2wiLCJUYWJzIiwiVGFiIiwiRXJyb3JJY29uIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4Iiwicm9sZSIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsImhhbmRsZUNoYW5nZSIsIl8iLCJuZXdWYWx1ZSIsIm1vcmVEZXRhaWxzIiwiZGV0YWlsc1JlcXVpcmVkTGFiZWwiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0T3JkZXJUaWNrZXRzIiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImxhc3RfcGFnZSIsInRoZW1lIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwibWVtYmVyVGlja2V0cyIsImZpbmQiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY29uc29sZSIsImxvZyIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidGlja2V0c190b3RhbCIsIlRleHRGaWVsZCIsIkF1dG9jb21wbGV0ZSIsIlR5cG9ncmFwaHkiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsImZvcm1payIsInN1bW1pdElkIiwiaXNSZXF1aXJlZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJ0b3VjaGVkIiwic2V0RmllbGRUb3VjaGVkIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiQm9vbGVhbiIsImhlbHBlclRleHQiLCJ1bmRlZmluZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwib25CbHVyIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInNvbWUiLCJ0aXRsZSIsInJlbmRlcklucHV0IiwiZnVsbFdpZHRoIiwicmVxdWlyZWQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJ2IiwiZGlzYWJsZWQiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwiYXJyYXkiLCJub2RlIiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5IiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUJsdXIiLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIndyYXBwZXIiLCJUaWNrZXREZWxlZ2F0aW9uRmllbGRzIiwiZGVsZWdhdGVkX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZWRfbGFzdF9uYW1lIiwidXNlRm9ybWlrIiwieXVwIiwiVGlja2V0T3duZXJGaWVsZHMiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJhbGxvd3NEZWxlZ2F0aW9uIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsInN1YlF1ZXN0aW9uIiwic3ViUXVlc3Rpb25TbHVnIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsIm1hdGNoIiwic2NoIiwicGFyc2VBbnN3ZXJzIiwiYW5zd2VycyIsIm1hbmFnZXIiLCJvbmx5UmVsZXZhbnQiLCJhcmd1bWVudHMiLCJpbml0aWFsVmFsdWVzIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJzdWJBbnN3ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiaXNWYWxpZCIsInN1Ym1pdENvdW50IiwiZXJyb3JBcnJheSIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJvblN1Ym1pdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJleHRyYV9xdWVzdGlvbnMiLCJyZWR1Y2UiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImd1dHRlckJvdHRvbSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZm9vdGVyIiwic2F2ZUJ0biIsImNhbmNlbEJ0biIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRHJhd2VyIiwiSWNvbkJ1dHRvbiIsIkNsb3NlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwib3BlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsInRpY2tldERldGFpbENvbnRhaW5lciIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJzdWJ0aXRsZSIsInFyQ29kZSIsIm1heFdpZHRoIiwicXJfY29kZSIsInZpZXdCb3giLCJxck5vdGUiLCJpc192aXJ0dWFsIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsImlzQWN0aXZlIiwicmVmdW5kX3JlcXVlc3RzIiwiciIsInRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSIsInRpY2tldF91bmFzc2lnbmVkIiwidGlja2V0X2NvbXBsZXRlIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsImdldFN0YXR1cyIsImlzUmVmdW5kYWJsZSIsImZpbmFsX2Ftb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsImFsbG93c0RlbGVnYXRlIiwicHJvbW9fY29kZSIsIm1hbmFnZXJfaWQiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX2xhc3RfcGFnZSIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsImZvcm1lck9yZGVyIiwibyIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJNSUxMSVNFQ19UT19TRUMiLCJPTkVfREFZIiwibW9tZW50IiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInN0YXJ0RGF5Iiwic3RhcnRfZGF0ZSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImVuZF9kYXRlIiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwiTWF0aCIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsIlByb3ZpZGVyIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
|
|
4923
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGdUQ7QUFDSDtBQUt6QjtBQUVwQixNQUFNVyxXQUFXLEdBQUcsYUFBYTtBQUNqQyxNQUFNQyxZQUFZLEdBQUcsY0FBYzs7QUFFMUM7QUFDTyxNQUFNQyxlQUFlLEdBQUcsWUFBWTtBQUNwQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxtQkFBbUIsR0FBRyxxQkFBcUI7QUFDakQsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9COztBQUV0RDtBQUNPLE1BQU1DLFdBQVcsR0FBRyxhQUFhO0FBQ2pDLE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxtQkFBbUIsR0FBRyxxQkFBcUI7QUFDakQsTUFBTUMsb0JBQW9CLEdBQUcsc0JBQXNCO0FBQ25ELE1BQU1DLDBCQUEwQixHQUFHLDRCQUE0QjtBQUMvRCxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9CO0FBQy9DLE1BQU1DLHVCQUF1QixHQUFHLHlCQUF5QjtBQUN6RCxNQUFNQyxvQkFBb0IsR0FBRztFQUNsQ0MsS0FBSyxFQUFFLGdCQUFnQjtFQUN2QkMsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsUUFBUSxFQUFFLG9CQUFvQjtFQUM5QkMsT0FBTyxFQUFFLGtCQUFrQjtFQUMzQkMsa0JBQWtCLEVBQUUscUJBQXFCO0VBQ3pDQyxjQUFjLEVBQUU7QUFDbEIsQ0FBQzs7QUFFRDtBQUNPLE1BQU1DLHlCQUF5QixHQUFHLDJCQUEyQjtBQUM3RCxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9CO0FBQy9DLE1BQU1DLFFBQVEsR0FBRyxVQUFVOztBQUVsQztBQUNPLE1BQU1DLFVBQVUsR0FBRyxZQUFZO0FBQy9CLE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUMzRCxNQUFNQywwQkFBMEIsR0FBRyw0QkFBNEI7QUFDL0QsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBRTNELE1BQU1DLFVBQVUsR0FBR0EsQ0FBQSxLQUFPQyxRQUFRLElBQUs7RUFDNUNBLFFBQVEsQ0FBQ3hDLDJGQUFZLENBQUNRLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVNLE1BQU1pQyxXQUFXLEdBQUdBLENBQUEsS0FBT0QsUUFBUSxJQUFLO0VBQzdDQSxRQUFRLENBQUN4QywyRkFBWSxDQUFDUyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7O0FBRUQ7QUFDTyxNQUFNaUMsZUFBZSxHQUFHLGlCQUFpQjtBQUN6QyxNQUFNQyx1QkFBdUIsR0FBRyx5QkFBeUI7O0FBRWhFO0FBQ08sTUFBTUMsV0FBVyxHQUFJQyxTQUFTLElBQUs7RUFDeEMsTUFBTUMsTUFBTSxHQUFHLEVBQUU7RUFDakIsSUFBSUQsU0FBUyxDQUFDRSxJQUFJLEtBQUtMLGVBQWUsRUFBRTtJQUN0Q0ksTUFBTSxDQUFDRSxJQUFJLENBQUMsR0FBR0gsU0FBUyxDQUFDSSxJQUFJLEtBQUtKLFNBQVMsQ0FBQ0ssS0FBSyxLQUFLTCxTQUFTLENBQUNNLEtBQUssRUFBRSxDQUFDO0VBQzFFO0VBQ0EsSUFBSU4sU0FBUyxDQUFDRSxJQUFJLEtBQUtKLHVCQUF1QixFQUFFO0lBQzlDRyxNQUFNLENBQUNFLElBQUksQ0FBQyxHQUFHSCxTQUFTLENBQUNJLElBQUksS0FBS0osU0FBUyxDQUFDTyxLQUFLLEVBQUUsQ0FBQztFQUN0RDtFQUNBLE9BQU9OLE1BQU07QUFDZixDQUFDO0FBRU0sTUFBTU8sZ0JBQWdCLEdBQUlDLFNBQVMsSUFDeENBLFNBQVMsS0FBSyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUc7O0FBRWpDO0FBQ08sTUFBTUMsYUFBYSxHQUN4QkMsSUFBQTtFQUFBLElBQUM7SUFDQ0MsSUFBSSxHQUFHcEQsd0RBQVU7SUFDakJxRCxPQUFPLEdBQUdwRCxvRUFBc0I7SUFDaEN3QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1hhLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVEMsSUFBSSxHQUFHO0VBQ1QsQ0FBQyxHQUFBSixJQUFBO0VBQUEsT0FDRCxPQUFPaEIsUUFBUSxFQUFFcUIsUUFBUSxFQUFBQyxLQUFBLEtBQXFCO0lBQUEsSUFBbkI7TUFBRUM7SUFBVyxDQUFDLEdBQUFELEtBQUE7SUFDdkMsTUFBTTtNQUNKRSxXQUFXLEVBQUU7UUFBRUM7TUFBTztJQUN4QixDQUFDLEdBQUdKLFFBQVEsQ0FBQyxDQUFDO0lBRWQsTUFBTUssV0FBVyxHQUFHLE1BQU05RCxpRUFBb0IsQ0FBQyxDQUFDLENBQUMrRCxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7SUFFRDdCLFFBQVEsQ0FBQ3RDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU1vRSxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFTCxXQUFXO01BQ3pCTSxLQUFLLEVBQUUsS0FBSztNQUNaLFVBQVUsRUFBRSxDQUFDLGNBQWMsQ0FBQztNQUM1QkMsU0FBUyxFQUFFLE1BQU07TUFDakJoQixJQUFJLEVBQUVHLElBQUksR0FBR0gsSUFBSSxHQUFHbEQsMkRBQWEsR0FBR2tELElBQUk7TUFDeENpQixRQUFRLEVBQUVoQjtJQUNaLENBQUM7SUFFRCxJQUFJaUIsTUFBTSxDQUFDQyxJQUFJLENBQUM5QixNQUFNLENBQUMsQ0FBQytCLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDbEMsTUFBTUMsT0FBTyxHQUFHbEMsV0FBVyxDQUFDRSxNQUFNLENBQUM7TUFDbkN3QixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHQSxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBR1EsT0FBTyxDQUFDO0lBQzFEO0lBQ0EsSUFBSUgsTUFBTSxDQUFDQyxJQUFJLENBQUNqQixJQUFJLENBQUMsQ0FBQ2tCLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDaENQLE1BQU0sQ0FBQ0UsS0FBSyxHQUFHLEdBQUduQixnQkFBZ0IsQ0FBQ00sSUFBSSxDQUFDTCxTQUFTLENBQUMsR0FBR0ssSUFBSSxDQUFDVixJQUFJLEVBQUU7SUFDbEU7SUFFQSxPQUFPbkQseUZBQVUsQ0FDZixJQUFJLEVBQ0pFLDJGQUFZLENBQUNVLGVBQWUsQ0FBQyxFQUM3QixHQUFHcUQsVUFBVSxtQkFBbUJFLE1BQU0sQ0FBQ2MsRUFBRSxZQUFZLEVBQ3JEbEYsMkZBQ0YsQ0FBQyxDQUFDeUUsTUFBTSxDQUFDLENBQUM5QixRQUFRLENBQUMsQ0FDaEJ3QyxJQUFJLENBQUVDLE9BQU8sSUFBSztNQUNqQnpDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO01BQ3ZCLE9BQU9nRixPQUFPO0lBQ2hCLENBQUMsQ0FBQyxDQUNEZCxLQUFLLENBQUVlLENBQUMsSUFBSztNQUNaMUMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT2lGLENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNQyxnQkFBZ0IsR0FBSUMsT0FBTyxJQUFLLE1BQU81QyxRQUFRLElBQzFEQSxRQUFRLENBQUN4QywyRkFBWSxDQUFDWSxtQkFBbUIsQ0FBQyxDQUFDd0UsT0FBTyxDQUFDLENBQUM7O0FBRXREO0FBQ08sTUFBTUMsT0FBTyxHQUFJQyxJQUFJLElBQU05QyxRQUFRLElBQ3hDQSxRQUFRLENBQUN4QywyRkFBWSxDQUFDa0MsUUFBUSxDQUFDLENBQUNvRCxJQUFJLENBQUMsQ0FBQztBQUVqQyxNQUFNQyxhQUFhLEdBQ3ZCQyxPQUFPLElBQ1IsT0FBT2hELFFBQVEsRUFBQWlELEtBQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFQztFQUFXLENBQUMsR0FBQUQsS0FBQTtFQUM3QixNQUFNdkIsV0FBVyxHQUFHLE1BQU05RCxpRUFBb0IsQ0FBQyxDQUFDLENBQUMrRCxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7RUFFRDdCLFFBQVEsQ0FBQ3RDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU1vRSxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFTDtFQUNoQixDQUFDO0VBRUQxQixRQUFRLENBQUN4QywyRkFBWSxDQUFDK0IseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFbkQsT0FBTzVCLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDaUMsa0JBQWtCLENBQUM7RUFDaEM7RUFDQSxHQUFHeUQsVUFBVSxrQkFBa0IsRUFDL0JGLE9BQU8sRUFDUDNGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFFQyxPQUFPLElBQUtBLE9BQU8sQ0FBQyxDQUMxQmQsS0FBSyxDQUFDLE1BQU0zQixRQUFRLENBQUN4QywyRkFBWSxDQUFDZ0Msd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDOztBQUVIOztBQUVPLE1BQU0yRCxjQUFjLEdBQ3pCQyxLQUFBO0VBQUEsSUFBQztJQUFFbkMsSUFBSSxHQUFHcEQsd0RBQVU7SUFBRXFELE9BQU8sR0FBR3BELG9FQUFzQkE7RUFBQyxDQUFDLEdBQUFzRixLQUFBO0VBQUEsT0FDeEQsT0FBT3BELFFBQVEsRUFBRXFCLFFBQVEsRUFBQWdDLEtBQUEsS0FBcUI7SUFBQSxJQUFuQjtNQUFFOUI7SUFBVyxDQUFDLEdBQUE4QixLQUFBO0lBQ3ZDLE1BQU07TUFDSkMsU0FBUyxFQUFFO1FBQUVDO01BQVksQ0FBQztNQUMxQjlCO0lBQ0YsQ0FBQyxHQUFHSixRQUFRLENBQUMsQ0FBQztJQUNkLElBQUksQ0FBQ0ksTUFBTSxFQUFFLE9BQU9HLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTUgsV0FBVyxHQUFHLE1BQU05RCxpRUFBb0IsQ0FBQyxDQUFDLENBQUMrRCxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7SUFFRCxJQUFJLENBQUMwQixXQUFXLENBQUNoQixFQUFFLEVBQUUsT0FBT1gsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUM1QzdCLFFBQVEsQ0FBQ3RDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU1vRSxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFTCxXQUFXO01BQ3pCcEIsTUFBTSxFQUFFLGNBQWM7TUFDdEJrRCxNQUFNLEVBQUUsMkJBQTJCO01BQ25DeEIsS0FBSyxFQUFFLEtBQUs7TUFDWnlCLE1BQU0sRUFDSix1SEFBdUg7TUFDekh4QixTQUFTLEVBQUUsTUFBTTtNQUNqQmhCLElBQUk7TUFDSmlCLFFBQVEsRUFBRWhCO0lBQ1osQ0FBQztJQUNELE9BQU81RCx5RkFBVSxDQUNmLElBQUksRUFDSkUsMkZBQVksQ0FBQ2MsV0FBVyxDQUFDLEVBQ3pCLEdBQUdpRCxVQUFVLG1CQUFtQkUsTUFBTSxDQUFDYyxFQUFFLHdCQUF3QixFQUNqRWxGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFDLE1BQU07TUFDVnhDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUNEa0UsS0FBSyxDQUFFZSxDQUFDLElBQUs7TUFDWjFDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO01BQ3ZCLE9BQU9pRixDQUFDO0lBQ1YsQ0FBQyxDQUFDO0VBQ04sQ0FBQztBQUFBO0FBRUksTUFBTWdCLGlCQUFpQixHQUM1QkMsS0FBQTtFQUFBLElBQUM7SUFBRWYsT0FBTztJQUFFM0IsSUFBSSxHQUFHcEQsd0RBQVU7SUFBRXFELE9BQU8sR0FBR3BELG9FQUFzQkE7RUFBQyxDQUFDLEdBQUE2RixLQUFBO0VBQUEsT0FDakUsT0FBTzNELFFBQVEsRUFBRXFCLFFBQVEsRUFBQXVDLEtBQUEsS0FBcUI7SUFBQSxJQUFuQjtNQUFFckM7SUFBVyxDQUFDLEdBQUFxQyxLQUFBO0lBQ3ZDNUQsUUFBUSxDQUFDdEMsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTWdFLFdBQVcsR0FBRyxNQUFNOUQsaUVBQW9CLENBQUMsQ0FBQyxDQUFDK0QsS0FBSyxDQUFDLE1BQ3JEQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUNqQixDQUFDO0lBRUQsTUFBTUMsTUFBTSxHQUFHO01BQ2JDLFlBQVksRUFBRUwsV0FBVztNQUN6QjhCLE1BQU0sRUFDSixtSEFBbUg7TUFDckh4QixLQUFLLEVBQUUsS0FBSztNQUNaQyxTQUFTLEVBQUUscUNBQXFDO01BQ2hEd0IsTUFBTSxFQUNKLHlFQUF5RTtNQUMzRXhDLElBQUk7TUFDSmlCLFFBQVEsRUFBRWhCO0lBQ1osQ0FBQztJQUNELE9BQU81RCx5RkFBVSxDQUNmLElBQUksRUFDSkUsMkZBQVksQ0FBQ21CLG9CQUFvQixDQUFDLEVBQ2xDLEdBQUc0QyxVQUFVLDhCQUE4QnFCLE9BQU8sVUFBVSxFQUM1RHZGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFFQyxPQUFPLElBQUs7TUFDakJ6QyxRQUFRLENBQUN2QywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QixPQUFPZ0YsT0FBTztJQUNoQixDQUFDLENBQUMsQ0FDRGQsS0FBSyxDQUFFZSxDQUFDLElBQUs7TUFDWjFDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO01BQ3ZCdUMsUUFBUSxDQUFDeEMsMkZBQVksQ0FBQ29CLDBCQUEwQixDQUFDLENBQUM7TUFDbEQsT0FBTzhELENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNbUIsa0JBQWtCLEdBQzVCQyxNQUFNLElBQ1AsT0FBTzlELFFBQVEsRUFBQStELEtBQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFeEM7RUFBVyxDQUFDLEdBQUF3QyxLQUFBO0VBQzdCLE1BQU1yQyxXQUFXLEdBQUcsTUFBTTlELGlFQUFvQixDQUFDLENBQUMsQ0FBQytELEtBQUssQ0FBQyxNQUNyREMsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FDakIsQ0FBQztFQUVELE1BQU07SUFBRW1DO0VBQVEsQ0FBQyxHQUFHRixNQUFNO0VBRTFCOUQsUUFBUSxDQUFDdEMsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTWtGLE9BQU8sR0FBR2tCLE1BQU0sQ0FBQzlCLEtBQUssR0FBRzhCLE1BQU0sQ0FBQzlCLEtBQUssQ0FBQ08sRUFBRSxHQUFHdUIsTUFBTSxDQUFDRyxRQUFRO0VBRWhFLE1BQU1uQyxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFTDtFQUNoQixDQUFDO0VBRUQsT0FBTy9ELHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDa0IsbUJBQW1CLENBQUMsRUFDakMsR0FBRzZDLFVBQVUsOEJBQThCcUIsT0FBTyxZQUFZa0IsTUFBTSxDQUFDdkIsRUFBRSxvQkFBb0IsRUFDM0Y7SUFBRXlCO0VBQVEsQ0FBQyxFQUNYM0csMkZBQ0YsQ0FBQyxDQUFDeUUsTUFBTSxDQUFDLENBQUM5QixRQUFRLENBQUMsQ0FDaEJ3QyxJQUFJLENBQUMsTUFBTTtJQUNWeEMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQ0RrRSxLQUFLLENBQUVlLENBQUMsSUFBSztJQUNaMUMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBT2lGLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUksTUFBTXdCLFlBQVksR0FDdkJDLEtBQUE7RUFBQSxJQUFDO0lBQUVMO0VBQU8sQ0FBQyxHQUFBSyxLQUFBO0VBQUEsT0FDWCxPQUFPbkUsUUFBUSxFQUFFcUIsUUFBUSxFQUFBK0MsTUFBQSxLQUFxQjtJQUFBLElBQW5CO01BQUU3QztJQUFXLENBQUMsR0FBQTZDLE1BQUE7SUFDdkMsTUFBTTFDLFdBQVcsR0FBRyxNQUFNOUQsaUVBQW9CLENBQUMsQ0FBQyxDQUFDK0QsS0FBSyxDQUFDLE1BQ3JEQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUNqQixDQUFDO0lBRUQ3QixRQUFRLENBQUN0QywyRkFBWSxDQUFDLENBQUMsQ0FBQztJQUV4QixNQUFNO01BQ0oyRyxVQUFVLEVBQUU7UUFBRUMsWUFBWSxFQUFFQztNQUFVLENBQUM7TUFDdkNDLFdBQVcsRUFBRTtRQUFFRixZQUFZLEVBQUVHO01BQVc7SUFDMUMsQ0FBQyxHQUFHcEQsUUFBUSxDQUFDLENBQUM7SUFFZCxNQUFNdUIsT0FBTyxHQUFHa0IsTUFBTSxDQUFDOUIsS0FBSyxHQUFHOEIsTUFBTSxDQUFDOUIsS0FBSyxDQUFDTyxFQUFFLEdBQUd1QixNQUFNLENBQUNHLFFBQVE7SUFFaEUsTUFBTW5DLE1BQU0sR0FBRztNQUNiQyxZQUFZLEVBQUVMO0lBQ2hCLENBQUM7SUFFRCxPQUFPbkUsNEZBQWEsQ0FDbEIsSUFBSSxFQUNKQywyRkFBWSxDQUFDaUIsYUFBYSxDQUFDLEVBQzNCLEdBQUc4QyxVQUFVLDhCQUE4QnFCLE9BQU8sWUFBWWtCLE1BQU0sQ0FBQ3ZCLEVBQUUsU0FBUyxFQUNoRixDQUFDLENBQUMsRUFDRmxGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFFQyxPQUFPLElBQUs7TUFDakJ6QyxRQUFRLENBQUN2QywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUV2QixJQUFJcUcsTUFBTSxDQUFDRyxRQUFRLEVBQUU7UUFDbkJqRSxRQUFRLENBQUNlLGFBQWEsQ0FBQztVQUFFRSxJQUFJLEVBQUVzRDtRQUFVLENBQUMsQ0FBQyxDQUFDO01BQzlDLENBQUMsTUFBTTtRQUNMdkUsUUFBUSxDQUFDbUQsY0FBYyxDQUFDO1VBQUVsQyxJQUFJLEVBQUV3RDtRQUFXLENBQUMsQ0FBQyxDQUFDO01BQ2hEO01BQ0EsT0FBT2hDLE9BQU87SUFDaEIsQ0FBQyxDQUFDLENBQ0RkLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO01BQ1oxQyxRQUFRLENBQUN2QywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QixNQUFNaUYsQ0FBQztJQUNULENBQUMsQ0FBQztFQUNOLENBQUM7QUFBQTs7QUFFSDtBQUNPLE1BQU1nQyxTQUFTLEdBQUlqRCxNQUFNLElBQUssTUFBT3pCLFFBQVEsSUFDbERBLFFBQVEsQ0FBQ3hDLDJGQUFZLENBQUNtQyxVQUFVLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDO0FBRXJDLE1BQU1rRCxpQkFBaUIsR0FDNUJBLENBQUEsS0FDQSxPQUFPM0UsUUFBUSxFQUFFcUIsUUFBUSxFQUFBdUQsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVyRDtFQUFXLENBQUMsR0FBQXFELE1BQUE7RUFDdkMsTUFBTTtJQUNKcEQsV0FBVyxFQUFFO01BQ1hDLE1BQU07TUFDTnFCLElBQUksRUFBRTtRQUFFUztNQUFZO0lBQ3RCO0VBQ0YsQ0FBQyxHQUFHbEMsUUFBUSxDQUFDLENBQUM7RUFFZCxNQUFNSyxXQUFXLEdBQUcsTUFBTTlELGlFQUFvQixDQUFDLENBQUMsQ0FBQytELEtBQUssQ0FBQyxNQUNyREMsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FDakIsQ0FBQztFQUVELE1BQU1DLE1BQU0sR0FBRztJQUNiYixJQUFJLEVBQUUsQ0FBQztJQUNQaUIsUUFBUSxFQUFFLEVBQUU7SUFDWnNCLE1BQU0sRUFBRSwyQ0FBMkM7SUFDbkR6QixZQUFZLEVBQUVMLFdBQVc7SUFDekIsVUFBVSxFQUFFO0VBQ2QsQ0FBQztFQUVELE1BQU1tRCxRQUFRLEdBQUcsR0FBR3RELFVBQVUsbUJBQW1CRSxNQUFNLENBQUNjLEVBQUUsY0FBY2dCLFdBQVcsQ0FBQ3VCLFdBQVcsMEJBQTBCO0VBRXpILE9BQU94SCx5RkFBVSxDQUNmLElBQUksRUFDSkUsMkZBQVksQ0FBQ3VCLHVCQUF1QixDQUFDLEVBQ3JDOEYsUUFBUSxFQUNSeEgsMkZBQ0YsQ0FBQyxDQUFDeUUsTUFBTSxDQUFDLENBQUM5QixRQUFRLENBQUMsQ0FBQ3dDLElBQUksQ0FBQyxNQUFNO0lBQzdCeEMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hXcUM7QUFDTDtBQUNLO0FBQ087QUFDckI7QUFDc0M7QUFDZ0I7QUFDcEI7QUFDVjtBQUNGO0FBQ1U7QUFDWDtBQUFBO0FBRWhDLFNBQVN3SSxlQUFlQSxDQUFBakYsSUFBQSxFQUF3QjtFQUFBLElBQXZCO0lBQUVrRixRQUFRO0lBQUVDO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUMzRCxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNa0IsR0FBRyxHQUFHakIsNENBQUssQ0FBQyxDQUFDO0VBQ25CLE1BQU0sQ0FBQ2tCLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUd2QiwrQ0FBUSxDQUFDcUIsR0FBRyxDQUFDO0VBQy9DLE1BQU1HLFlBQVksR0FBSUMsR0FBRyxJQUFLO0lBQzVCRixZQUFZLENBQUNFLEdBQUcsQ0FBQztJQUNqQixNQUFNQyxJQUFJLEdBQUcsSUFBSUMsSUFBSSxDQUFDRixHQUFHLENBQUNHLEVBQUUsQ0FBQztJQUM3QixNQUFNO01BQUVsRyxLQUFLO01BQUVDO0lBQU0sQ0FBQyxHQUFHOEUsb0VBQTJCLENBQUNpQixJQUFJLENBQUM7SUFDMURSLFFBQVEsQ0FBQztNQUNQM0YsSUFBSSxFQUFFTCxxREFBZTtNQUNyQk8sSUFBSSxFQUFFLFNBQVM7TUFDZmlHLElBQUk7TUFDSmhHLEtBQUs7TUFDTEM7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDO0VBQ0QsTUFBTWtHLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCVixPQUFPLENBQUMsQ0FBQztJQUNUSSxZQUFZLENBQUNGLEdBQUcsQ0FBQztFQUNuQixDQUFDO0VBQ0Qsb0JBQ0VQLHdEQUFBLENBQUFFLHdEQUFBO0lBQUFjLFFBQUEsZ0JBQ0VsQix1REFBQTtNQUFLbUIsU0FBUyxFQUFFckIsaUVBQXVCO01BQUFvQixRQUFBLEVBQUVWLENBQUMsQ0FBQyxxQkFBcUI7SUFBQyxDQUFNLENBQUMsZUFDeEVOLHdEQUFBLENBQUNaLDREQUFLO01BQ0orQixVQUFVLEVBQUMsUUFBUTtNQUNuQm5HLFNBQVMsRUFBQyxLQUFLO01BQ2ZvRyxFQUFFLEVBQUU7UUFBRUMsRUFBRSxFQUFFLENBQUM7UUFBRUMsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQkwsU0FBUyxFQUFFckIscUVBQTJCO01BQUFvQixRQUFBLGdCQUV0Q2xCLHVEQUFBLENBQUNKLGtFQUFTO1FBQ1I4QixRQUFRLEVBQUMsT0FBTztRQUNoQlAsU0FBUyxFQUFFckIsaUVBQXVCO1FBQ2xDOEIsT0FBTyxFQUFFWDtNQUFjLENBQ3hCLENBQUMsZUFDRmpCLHVEQUFBLENBQUNOLDBGQUFvQjtRQUFDbUMsV0FBVyxFQUFFcEMsMEVBQWE7UUFBQXlCLFFBQUEsZUFDOUNsQix1REFBQSxDQUFDTCxzRUFBVTtVQUNUd0IsU0FBUyxFQUFFckIsaUVBQXVCO1VBQ2xDaUMsUUFBUSxFQUFFbkIsWUFBYTtVQUN2QjVGLEtBQUssRUFBRTBGO1FBQVUsQ0FDbEI7TUFBQyxDQUNrQixDQUFDO0lBQUEsQ0FDbEIsQ0FBQztFQUFBLENBQ1IsQ0FBQztBQUVQO0FBRUFMLGVBQWUsQ0FBQzJCLFNBQVMsR0FBRztFQUMxQjFCLFFBQVEsRUFBRWpCLHdEQUFjO0VBQ3hCa0IsT0FBTyxFQUFFbEIsd0RBQWM0QztBQUN6QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5RDBEO0FBQ3hCO0FBQ0s7QUFDb0I7QUFDeEI7QUFDVztBQUNKO0FBQ0k7QUFBQTtBQUUvQyxTQUFTSyxNQUFNQSxDQUFBbEgsSUFBQSxFQUF3QjtFQUFBLElBQXZCO0lBQUVrRixRQUFRO0lBQUVDO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUNuQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUNnRCxjQUFjLEVBQUVDLGlCQUFpQixDQUFDLEdBQUdwRCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMzRCxNQUFNLENBQUNxRCxjQUFjLEVBQUVDLGlCQUFpQixDQUFDLEdBQUd0RCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMzRCxNQUFNLENBQUN1RCxlQUFlLEVBQUVDLGtCQUFrQixDQUFDLEdBQUd4RCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUM3RCxNQUFNeUQsU0FBUyxHQUFHWCw2Q0FBTSxDQUFDLElBQUksQ0FBQztFQUM5QixNQUFNWSx3QkFBd0IsR0FBSUMsS0FBSyxJQUFLO0lBQzFDLElBQUlGLFNBQVMsQ0FBQ0csT0FBTyxJQUFJLENBQUNILFNBQVMsQ0FBQ0csT0FBTyxDQUFDQyxRQUFRLENBQUNGLEtBQUssQ0FBQ0csTUFBTSxDQUFDLEVBQUU7TUFDbEUsSUFBSVgsY0FBYyxFQUFFO1FBQ2xCQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDeEJFLGlCQUFpQixDQUFDLEtBQUssQ0FBQztNQUMxQjtJQUNGO0VBQ0YsQ0FBQztFQUNEUCxnREFBUyxDQUFDLE1BQU07SUFDZGdCLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsT0FBTyxFQUFFTix3QkFBd0IsRUFBRSxLQUFLLENBQUM7SUFDbkUsT0FBTyxNQUFNO01BQ1hLLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsT0FBTyxFQUFFUCx3QkFBd0IsRUFBRSxLQUFLLENBQUM7SUFDeEUsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDUCxjQUFjLENBQUMsQ0FBQztFQUVwQixNQUFNZSxNQUFNLEdBQUdBLENBQUEsS0FBTTtJQUNuQmQsaUJBQWlCLENBQUMsQ0FBQ0QsY0FBYyxDQUFDO0lBQ2xDRyxpQkFBaUIsQ0FBQyxDQUFDRCxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUNELG9CQUNFdkMsdURBQUEsQ0FBQ21DLDhDQUFHO0lBQUNsQixTQUFTLEVBQUVyQixnRUFBdUI7SUFBQzBELEdBQUcsRUFBRVgsU0FBVTtJQUFBM0IsUUFBQSxnQkFDckRoQix1REFBQSxDQUFDWiw0REFBSztNQUNKK0IsVUFBVSxFQUFDLFFBQVE7TUFDbkJuRyxTQUFTLEVBQUMsS0FBSztNQUNmb0csRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDckJJLE9BQU8sRUFBRTBCLE1BQU87TUFBQXBDLFFBQUEsZ0JBRWhCbEIsc0RBQUEsQ0FBQ29DLHVFQUFjO1FBQUNWLFFBQVEsRUFBQyxPQUFPO1FBQUNQLFNBQVMsRUFBRXJCLDJEQUFpQjJEO01BQUMsQ0FBRSxDQUFDLEVBRWhFZCxlQUFlLGlCQUFJM0Msc0RBQUE7UUFBS21CLFNBQVMsRUFBRXJCLGdFQUF1QjtRQUFBb0IsUUFBQSxFQUFDO01BQUMsQ0FBSyxDQUFDLGVBQ25FbEIsc0RBQUE7UUFBTW1CLFNBQVMsRUFBRXJCLDREQUFtQjtRQUFBb0IsUUFBQSxFQUFFVixDQUFDLENBQUMsZUFBZTtNQUFDLENBQU8sQ0FBQztJQUFBLENBQzNELENBQUMsZUFDUlIsc0RBQUEsQ0FBQ3FDLDhDQUFHO01BQ0ZsQixTQUFTLEVBQUUsR0FBR3JCLG9FQUEwQixJQUFJQSwwREFBZ0IsSUFDMUR5QyxjQUFjLEdBQUd6QywrREFBcUIsR0FBRyxFQUFFLEVBQzFDO01BQUFvQixRQUFBLGVBRUhsQixzREFBQSxDQUFDSyxtREFBZTtRQUNkRSxPQUFPLEVBQUVBLENBQUEsS0FBTTtVQUNiQSxPQUFPLENBQUMsQ0FBQztVQUNUcUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1VBQ3pCVSxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUU7UUFDRmhELFFBQVEsRUFBRzVGLE1BQU0sSUFBSztVQUNwQjRGLFFBQVEsQ0FBQzVGLE1BQU0sQ0FBQztVQUNoQmtJLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUMxQjtNQUFFLENBQ0g7SUFBQyxDQUNDLENBQUM7RUFBQSxDQUNILENBQUM7QUFFVjtBQUVBTixNQUFNLENBQUNOLFNBQVMsR0FBRztFQUNqQjFCLFFBQVEsRUFBRWpCLHdEQUFjNEM7QUFDMUIsQ0FBQztBQUVELGlFQUFlSyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4RW1CO0FBQ0w7QUFDVztBQUNNO0FBQ0Y7QUFDRjtBQUNaO0FBQ1c7QUFDUztBQUFBO0FBRXhELE1BQU0yQixlQUFlLEdBQUdILDREQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTztFQUMzQ0ksUUFBUSxFQUFFLFVBQVU7RUFDcEJDLFdBQVcsRUFBRSxHQUFHO0VBQ2hCQyxVQUFVLEVBQUUsR0FBRztFQUNmQyxLQUFLLEVBQUUsTUFBTTtFQUNiQyxPQUFPLEVBQUU7QUFDWCxDQUFDLENBQUMsQ0FBQztBQUNILE1BQU1DLGlCQUFpQixHQUFHVCw0REFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87RUFDN0NVLE1BQU0sRUFBRSxNQUFNO0VBQ2ROLFFBQVEsRUFBRSxVQUFVO0VBQ3BCSSxPQUFPLEVBQUUsTUFBTTtFQUNmakQsVUFBVSxFQUFFLFFBQVE7RUFDcEJvRCxjQUFjLEVBQUU7QUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNQyxlQUFlLEdBQUdaLDREQUFNLENBQUNFLGdFQUFTLENBQUMsQ0FBQyxPQUFPO0VBQy9DVyxLQUFLLEVBQUUsU0FBUztFQUNoQkMsWUFBWSxFQUFFLCtCQUErQjtFQUM3Q0MsV0FBVyxFQUFFLE1BQU07RUFDbkJDLFlBQVksRUFBRSxNQUFNO0VBQ3BCcEQsUUFBUSxFQUFFO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNcUQsZ0JBQWdCLEdBQUdqQiw0REFBTSxDQUFDbEUsa0VBQVMsQ0FBQyxDQUFDLE9BQU87RUFDaERvRixPQUFPLEVBQUUsS0FBSztFQUNkdEQsUUFBUSxFQUFFLE9BQU87RUFDakI4QyxNQUFNLEVBQUUsTUFBTTtFQUNkTixRQUFRLEVBQUUsVUFBVTtFQUNwQmUsR0FBRyxFQUFFLEdBQUc7RUFDUkMsS0FBSyxFQUFFLEdBQUc7RUFDVlosT0FBTyxFQUFFLE1BQU07RUFDZmpELFVBQVUsRUFBRSxRQUFRO0VBQ3BCb0QsY0FBYyxFQUFFLFFBQVE7RUFDeEJVLE1BQU0sRUFBRSxTQUFTO0VBQ2pCQyxNQUFNLEVBQUU7QUFDVixDQUFDLENBQUMsQ0FBQztBQUVILFNBQVNDLE1BQU1BLENBQUFqSyxJQUFBLEVBQXdCO0VBQUEsSUFBdkI7SUFBRWtLLFFBQVE7SUFBRS9FO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUNuQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUNnRyxTQUFTLEVBQUVDLFlBQVksQ0FBQyxHQUFHcEcsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDakQsTUFBTSxDQUFDcUcsV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBR3RHLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQ2xELE1BQU11RyxTQUFTLEdBQUk1QyxLQUFLLElBQUs7SUFDM0IsTUFBTTtNQUNKNkMsR0FBRztNQUNIQyxXQUFXLEVBQUU7UUFDWDNDLE1BQU0sRUFBRTtVQUFFbEk7UUFBTTtNQUNsQjtJQUNGLENBQUMsR0FBRytILEtBQUs7SUFDVCxJQUFJNkMsR0FBRyxLQUFLLE9BQU8sRUFBRTtNQUNuQk4sUUFBUSxDQUFDO1FBQ1B0SyxLQUFLO1FBQ0xILElBQUksRUFBRSxRQUFRO1FBQ2RGLElBQUksRUFBRUosNkRBQXVCQTtNQUMvQixDQUFDLENBQUM7TUFDRmlMLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0QsTUFBTU0sV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJKLGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDbEJGLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkJqRixPQUFPLENBQUMsQ0FBQztFQUNYLENBQUM7RUFDRCxvQkFDRVAsc0RBQUEsQ0FBQ3FDLDhDQUFHO0lBQUFuQixRQUFBLGVBQ0ZoQix1REFBQSxDQUFDK0QsZUFBZTtNQUFBL0MsUUFBQSxHQUNicUUsU0FBUyxpQkFDUnZGLHNEQUFBLENBQUMrRSxnQkFBZ0I7UUFBQ25ELE9BQU8sRUFBRWtFLFdBQVk7UUFBQTVFLFFBQUEsZUFDckNsQixzREFBQSxDQUFDSixrRUFBUyxJQUFFO01BQUMsQ0FDRyxDQUNuQixlQUNESSxzREFBQSxDQUFDdUUsaUJBQWlCO1FBQUFyRCxRQUFBLGVBQ2hCbEIsc0RBQUEsQ0FBQytELG1FQUFVLElBQUU7TUFBQyxDQUNHLENBQUMsZUFDcEIvRCxzREFBQSxDQUFDMEUsZUFBZTtRQUNkcUIsV0FBVyxFQUFFdkYsQ0FBQyxDQUFDLDJCQUEyQixDQUFFO1FBQzVDd0YsVUFBVSxFQUFFO1VBQUUsWUFBWSxFQUFFO1FBQVMsQ0FBRTtRQUN2Q2hMLEtBQUssRUFBRXlLLFdBQVk7UUFDbkIxRCxRQUFRLEVBQUdqRixDQUFDLElBQUs0SSxjQUFjLENBQUM1SSxDQUFDLENBQUNvRyxNQUFNLENBQUNsSSxLQUFLLENBQUU7UUFDaEQySyxTQUFTLEVBQUVBO01BQVUsQ0FDdEIsQ0FBQztJQUFBLENBQ2E7RUFBQyxDQUNmLENBQUM7QUFFVjtBQUVBTixNQUFNLENBQUNyRCxTQUFTLEdBQUc7RUFDakJzRCxRQUFRLEVBQUVqRyx3REFBYztFQUN4QmtCLE9BQU8sRUFBRWxCLHdEQUFjNEM7QUFDekIsQ0FBQztBQUVELGlFQUFlb0QsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEdzQztBQUNuQjtBQUNJO0FBQ29CO0FBQ2pCO0FBQ0E7QUFBQTtBQUUvQyxTQUFTYyxJQUFJQSxDQUFBL0ssSUFBQSxFQUFhO0VBQUEsSUFBWjtJQUFFZ0w7RUFBTyxDQUFDLEdBQUFoTCxJQUFBO0VBQ3RCLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQzhHLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUdsSCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMvQyxNQUFNbUgsT0FBTyxHQUFHckUsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDNUIsTUFBTXNFLHNCQUFzQixHQUFJekQsS0FBSyxJQUFLO0lBQ3hDLElBQUl3RCxPQUFPLENBQUN2RCxPQUFPLElBQUksQ0FBQ3VELE9BQU8sQ0FBQ3ZELE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNHLE1BQU0sQ0FBQyxFQUFFO01BQzlEb0QsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNwQjtFQUNGLENBQUM7RUFDRG5FLGdEQUFTLENBQUMsTUFBTTtJQUNkZ0IsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVvRCxzQkFBc0IsRUFBRSxLQUFLLENBQUM7SUFDakUsT0FBTyxNQUFNO01BQ1hyRCxRQUFRLENBQUNFLG1CQUFtQixDQUFDLE9BQU8sRUFBRW1ELHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUN0RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNILFFBQVEsQ0FBQyxDQUFDO0VBRWQsTUFBTS9DLE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0lBQ25CZ0QsV0FBVyxDQUFDLENBQUNELFFBQVEsQ0FBQztFQUN4QixDQUFDO0VBQ0Qsb0JBQ0VuRyx1REFBQSxDQUFDbUMsOENBQUc7SUFBQ2xCLFNBQVMsRUFBRXJCLDhEQUFxQjtJQUFDOEIsT0FBTyxFQUFFMEIsTUFBTztJQUFBcEMsUUFBQSxnQkFDcERoQix1REFBQSxDQUFDWiw0REFBSztNQUNKa0UsR0FBRyxFQUFFK0MsT0FBUTtNQUNibEYsVUFBVSxFQUFDLFFBQVE7TUFDbkJuRyxTQUFTLEVBQUMsS0FBSztNQUNmb0csRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQU4sUUFBQSxnQkFFckJsQixzREFBQSxDQUFDa0cseUVBQWdCO1FBQUN4RSxRQUFRLEVBQUMsT0FBTztRQUFDUCxTQUFTLEVBQUVyQix5REFBZTRHO01BQUMsQ0FBRSxDQUFDLGVBQ2pFMUcsc0RBQUE7UUFBTW1CLFNBQVMsRUFBRXJCLDBEQUFpQjtRQUFBb0IsUUFBQSxFQUFFVixDQUFDLENBQUMsV0FBVztNQUFDLENBQU8sQ0FBQztJQUFBLENBQ3JELENBQUMsRUFDUDZGLFFBQVEsaUJBQ1BuRyx1REFBQSxDQUFDbUMsOENBQUc7TUFBQ2xCLFNBQVMsRUFBRSxHQUFHckIsa0VBQXdCLElBQUlBLDBEQUFnQixFQUFHO01BQUFvQixRQUFBLGdCQUNoRWxCLHNEQUFBLENBQUNpRyxpREFBTTtRQUFDOUUsU0FBUyxFQUFFckIsc0RBQWE7UUFBQzhCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNd0UsTUFBTSxDQUFDLE1BQU0sQ0FBRTtRQUFBbEYsUUFBQSxFQUM1RFYsQ0FBQyxDQUFDLGdCQUFnQjtNQUFDLENBQ2QsQ0FBQyxlQUNUUixzREFBQSxDQUFDaUcsaURBQU07UUFBQzlFLFNBQVMsRUFBRXJCLHNEQUFhO1FBQUM4QixPQUFPLEVBQUVBLENBQUEsS0FBTXdFLE1BQU0sQ0FBQyxLQUFLLENBQUU7UUFBQWxGLFFBQUEsRUFDM0RWLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUNkLENBQUM7SUFBQSxDQUNOLENBQ047RUFBQSxDQUNFLENBQUM7QUFFVjtBQUVBLGlFQUFlMkYsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRE87QUFDUztBQUNFO0FBQ1A7QUFDSjtBQUNJO0FBQ2lCO0FBQUE7QUFFL0MsU0FBU1ksZ0JBQWdCQSxDQUFBM0wsSUFBQSxFQUEwQztFQUFBLElBQXpDO0lBQUVrRixRQUFRO0lBQUU4RixNQUFNO0lBQUVkLFFBQVE7SUFBRS9FO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUMvRCxvQkFDRThFLHVEQUFBLENBQUM0RywrQ0FBSTtJQUFDbEQsU0FBUztJQUFDb0QsT0FBTyxFQUFDLFVBQVU7SUFBQzNGLFVBQVUsRUFBQyxRQUFRO0lBQUFILFFBQUEsZ0JBQ3BEaEIsdURBQUEsQ0FBQzRHLCtDQUFJO01BQ0hHLElBQUk7TUFDSkMsRUFBRSxFQUFFLENBQUU7TUFDTnRELFNBQVM7TUFDVG9CLE9BQU8sRUFBRSxDQUFFO01BQ1htQyxHQUFHLEVBQUUsQ0FBRTtNQUNQaEcsU0FBUyxFQUFFckIsb0VBQTJCO01BQ3RDd0IsRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQU4sUUFBQSxnQkFFckJsQixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ0csSUFBSTtRQUFBL0YsUUFBQSxlQUNSbEIsc0RBQUEsQ0FBQ3NDLCtDQUFNO1VBQUNoQyxRQUFRLEVBQUVBLFFBQVM7VUFBQ0MsT0FBTyxFQUFFQTtRQUFRLENBQUU7TUFBQyxDQUM1QyxDQUFDLGVBQ1BQLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDRyxJQUFJO1FBQUEvRixRQUFBLGVBQ1JsQixzREFBQSxDQUFDbUcsNkNBQUk7VUFBQ0MsTUFBTSxFQUFFQTtRQUFPLENBQUU7TUFBQyxDQUNwQixDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1BwRyxzREFBQSxDQUFDOEcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDQyxFQUFFLEVBQUUsQ0FBRTtNQUFDdEQsU0FBUztNQUFDYSxjQUFjLEVBQUMsVUFBVTtNQUFBdkQsUUFBQSxlQUNuRGxCLHNEQUFBLENBQUNxRiwrQ0FBTTtRQUFDQyxRQUFRLEVBQUVBLFFBQVM7UUFBQy9FLE9BQU8sRUFBRUE7TUFBUSxDQUFFO0lBQUMsQ0FDNUMsQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVYO0FBRUF3RyxnQkFBZ0IsQ0FBQy9FLFNBQVMsR0FBRztFQUMzQjFCLFFBQVEsRUFBRWpCLHdEQUFjO0VBQ3hCK0csTUFBTSxFQUFFL0csd0RBQWM7RUFDdEJpRyxRQUFRLEVBQUVqRyx3REFBYztFQUN4QmtCLE9BQU8sRUFBRWxCLHdEQUFjNEM7QUFDekIsQ0FBQztBQUVELGlFQUFlOEUsZ0JBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekNvQjtBQUNrQjtBQUN0QjtBQUNYO0FBQ3lCO0FBQ1g7QUFDWjtBQUNZO0FBQ3lCO0FBQzVCO0FBQUE7QUFFL0MsU0FBU1ksZUFBZUEsQ0FBQSxFQUFHO0VBQ3pCLE1BQU07SUFBRW5IO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1uRixRQUFRLEdBQUdpTix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKeEwsTUFBTTtJQUNOcUIsSUFBSTtJQUNKMEssWUFBWTtJQUNaQyxtQkFBbUI7SUFDbkJDLGVBQWU7SUFDZkM7RUFDRixDQUFDLEdBQUdULHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDcE0sV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFMkwscURBQVksQ0FBQztFQUNqRSxNQUFNLENBQUNVLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUc5SSwrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUM1QyxNQUFNLENBQUMrSSxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHaEosK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDbkQsTUFBTSxDQUFDMUUsTUFBTSxFQUFFMk4sU0FBUyxDQUFDLEdBQUdqSiwrQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3hDLE1BQU0sQ0FBQzdELElBQUksRUFBRStNLE9BQU8sQ0FBQyxHQUFHbEosK0NBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUVwQyxNQUFNbUIsT0FBTyxHQUFHQSxDQUFBLEtBQU07SUFDcEIrSCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2JELGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDcEJoTyxRQUFRLENBQUNDLHFEQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUM7RUFFRCxNQUFNa08sU0FBUyxHQUFHLE1BQUFBLENBQUEsS0FBWTtJQUM1Qm5PLFFBQVEsQ0FDTmUsdURBQWEsQ0FBQztNQUNaRSxJQUFJLEVBQUV3TSxtQkFBbUI7TUFDekJ2TSxPQUFPLEVBQUV3TSxlQUFlO01BQ3hCdE0sSUFBSSxFQUFFMk0sVUFBVTtNQUNoQnpOLE1BQU07TUFDTmE7SUFDRixDQUFDLENBQ0gsQ0FBQyxDQUFDcUIsSUFBSSxDQUFFNEwsR0FBRyxJQUFLO01BQ2QsSUFDRUEsR0FBRyxDQUFDQyxRQUFRLEVBQUVDLElBQUksRUFBRWpNLE1BQU0sR0FBR3FMLGVBQWUsSUFDNUNGLFlBQVksQ0FBQ25MLE1BQU0sS0FBS3NMLFlBQVksRUFFcENHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVEL0YsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RvRyxTQUFTLENBQUMsQ0FBQztFQUNiLENBQUMsRUFBRSxDQUFDN04sTUFBTSxFQUFFYSxJQUFJLEVBQUU0TSxVQUFVLENBQUMsQ0FBQztFQUU5QmhHLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUlqRixJQUFJLElBQUlyQixNQUFNLEVBQUU7TUFDbEJ6QixRQUFRLENBQUMyRSwyREFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDL0I7RUFDRixDQUFDLEVBQUUsQ0FBQzdCLElBQUksRUFBRXJCLE1BQU0sQ0FBQyxDQUFDO0VBRWxCLE1BQU15RSxRQUFRLEdBQUk1RixNQUFNLElBQUs7SUFDM0I0TixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWEQsU0FBUyxDQUFDM04sTUFBTSxDQUFDO0VBQ25CLENBQUM7RUFDRCxNQUFNMEwsTUFBTSxHQUFJbEwsU0FBUyxJQUFLO0lBQzVCbU4sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2JDLE9BQU8sQ0FBQztNQUFFcE4sU0FBUztNQUFFTCxJQUFJLEVBQUU7SUFBVSxDQUFDLENBQUM7RUFDekMsQ0FBQztFQUVELG9CQUNFcUYsd0RBQUEsQ0FBQUUsd0RBQUE7SUFBQWMsUUFBQSxnQkFDRWxCLHVEQUFBLENBQUMrRyx5REFBZ0I7TUFDZnpHLFFBQVEsRUFBRUEsUUFBUztNQUNuQjhGLE1BQU0sRUFBRUEsTUFBTztNQUNmZCxRQUFRLEVBQUVoRixRQUFTO01BQ25CQyxPQUFPLEVBQUVBO0lBQVEsQ0FDbEIsQ0FBQyxlQUNGTCx3REFBQSxDQUFDbUMsOENBQUc7TUFDRmxCLFNBQVMsRUFBRXJCLDZEQUFvQjtNQUMvQndCLEVBQUUsRUFBRTtRQUFFMEQsT0FBTyxFQUFFO1VBQUVrQyxFQUFFLEVBQUUsQ0FBQztVQUFFMEIsRUFBRSxFQUFFLENBQUM7VUFBRUMsRUFBRSxFQUFFO1FBQUU7TUFBRSxDQUFFO01BQUEzSCxRQUFBLGdCQUV6Q2xCLHVEQUFBO1FBQUltQixTQUFTLEVBQUVyQixnRUFBdUI7UUFBQW9CLFFBQUEsRUFBRXJGLE1BQU0sRUFBRWhCO01BQUksQ0FBSyxDQUFDLGVBQzFEbUYsdURBQUE7UUFBSW1CLFNBQVMsRUFBRXJCLGdFQUF1QjtRQUFBb0IsUUFBQSxFQUNuQ3dHLDhEQUFzQixDQUFDN0wsTUFBTTtNQUFDLENBQzdCLENBQUM7SUFBQSxDQUNGLENBQUMsRUFDTCtMLFlBQVksQ0FBQ25MLE1BQU0sZ0JBQ2xCdUQsdURBQUEsQ0FBQ3dILHdFQUFjO01BQ2J1QixVQUFVLEVBQUVuQixZQUFZLENBQUNuTCxNQUFPO01BQ2hDakIsSUFBSSxFQUFFQSxDQUFBLEtBQU00TSxhQUFhLENBQUMsSUFBSSxDQUFFO01BQ2hDSCxPQUFPLEVBQUVBLE9BQVE7TUFDakJlLGVBQWUsRUFBRSxDQUFFO01BQUE5SCxRQUFBLEVBRWxCMEcsWUFBWSxFQUFFcUIsR0FBRyxDQUFFN00sS0FBSyxpQkFDdkI0RCx1REFBQSxDQUFDeUgsbURBQVU7UUFBZ0JyTCxLQUFLLEVBQUVBLEtBQU07UUFBQ1AsTUFBTSxFQUFFQTtNQUFPLEdBQXZDTyxLQUFLLENBQUNPLEVBQW1DLENBQzNEO0lBQUMsQ0FDWSxDQUFDLGdCQUVqQnFELHVEQUFBLENBQUNxQyw4Q0FBRztNQUFDbEIsU0FBUyxFQUFFckIsOERBQXFCO01BQUFvQixRQUFBLEVBQUVWLENBQUMsQ0FBQyxrQkFBa0I7SUFBQyxDQUFNLENBQ25FO0VBQUEsQ0FDRCxDQUFDO0FBRVA7QUFDQSxpRUFBZW1ILGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6R0o7QUFDUztBQUNZO0FBQ0w7QUFDRTtBQUN1QjtBQUNwQjtBQUFBO0FBRS9DLFNBQVMyQixpQkFBaUJBLENBQUFsTyxJQUFBLEVBQTZCO0VBQUEsSUFBNUI7SUFBRWdCLEtBQUs7SUFBRVAsTUFBTTtJQUFFME47RUFBUSxDQUFDLEdBQUFuTyxJQUFBO0VBQ25ELE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRWlLLGFBQWE7SUFBRUMsV0FBVztJQUFFQyxVQUFVO0lBQUVDLFdBQVc7SUFBRUM7RUFBYyxDQUFDLEdBQzFFUiw0REFBb0IsQ0FBQztJQUFFaE4sS0FBSztJQUFFUCxNQUFNO0lBQUUwTjtFQUFRLENBQUMsQ0FBQztFQUNsRCxNQUFNTSxPQUFPLEdBQUcsR0FBRztFQUVuQixvQkFDRTNKLHVEQUFBLENBQUNtQyw4Q0FBRztJQUFDbEIsU0FBUyxFQUFFckIsa0VBQXlCO0lBQUFvQixRQUFBLEdBQ3RDMEksYUFBYSxFQUFFbk4sTUFBTSxHQUFHLENBQUMsaUJBQ3hCdUQsc0RBQUEsQ0FBQUksdURBQUE7TUFBQWMsUUFBQSxFQUNHMEksYUFBYSxDQUFDWCxHQUFHLENBQUUvSyxNQUFNLElBQUs7UUFDN0IsTUFBTTZMLFdBQVcsR0FDZDdMLE1BQU0sQ0FBQzhMLEdBQUcsSUFBSTlMLE1BQU0sQ0FBQytMLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHTCxPQUFPLENBQUMsR0FBSUEsT0FBTztRQUU5RCxvQkFDRTNKLHVEQUFBLENBQUM0RywrQ0FBSTtVQUNIbEQsU0FBUztVQUVUdEMsRUFBRSxFQUFFO1lBQUVFLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFBQU4sUUFBQSxnQkFFZGxCLHNEQUFBLENBQUM4RywrQ0FBSTtZQUFDSSxFQUFFLEVBQUUsQ0FBRTtZQUFDRCxJQUFJO1lBQUEvRixRQUFBLGVBQ2ZoQix1REFBQTtjQUFBZ0IsUUFBQSxHQUFNLEdBQ0gsRUFBQ2hELE1BQU0sQ0FBQzhMLEdBQUcsRUFBQyxHQUFDLEVBQUM5TCxNQUFNLENBQUMrTCxXQUFXLENBQUNwUCxJQUFJO1lBQUEsQ0FDbEM7VUFBQyxDQUNILENBQUMsZUFDUG1GLHNEQUFBLENBQUM4RywrQ0FBSTtZQUFDSSxFQUFFLEVBQUUsQ0FBRTtZQUFDRCxJQUFJO1lBQUNrRCxLQUFLLEVBQUMsT0FBTztZQUFBakosUUFBQSxFQUM1Qm1JLHNEQUFjLENBQUNVLFdBQVcsRUFBRTtjQUFFSyxRQUFRLEVBQUVoTyxLQUFLLENBQUNnTztZQUFTLENBQUM7VUFBQyxDQUN0RCxDQUFDO1FBQUEsR0FWRixZQUFZbE0sTUFBTSxDQUFDK0wsV0FBVyxDQUFDSSxPQUFPLEVBV3ZDLENBQUM7TUFFWCxDQUFDO0lBQUMsQ0FDRixDQUNILEVBQ0FqTyxLQUFLLENBQUNrTyxlQUFlLEdBQUcsQ0FBQyxpQkFDeEJwSyx1REFBQSxDQUFDNEcsK0NBQUk7TUFBQ2xELFNBQVM7TUFBQ3RDLEVBQUUsRUFBRTtRQUFFRSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUFOLFFBQUEsZ0JBQzVCbEIsc0RBQUEsQ0FBQzhHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQS9GLFFBQUEsRUFDZFYsQ0FBQyxDQUFDLHlCQUF5QjtNQUFDLENBQ3pCLENBQUMsZUFDUE4sdURBQUEsQ0FBQzRHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2tELEtBQUssRUFBQyxPQUFPO1FBQUFqSixRQUFBLEdBQUMsR0FDN0IsRUFBQ3NJLGFBQWE7TUFBQSxDQUNYLENBQUM7SUFBQSxDQUNILENBQ1AsRUFDQXBOLEtBQUssQ0FBQ21PLFlBQVksR0FBRyxDQUFDLGlCQUNyQnJLLHVEQUFBLENBQUM0RywrQ0FBSTtNQUFDbEQsU0FBUztNQUFDdEMsRUFBRSxFQUFFO1FBQUVFLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQU4sUUFBQSxnQkFDNUJsQixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFBL0YsUUFBQSxFQUNkVixDQUFDLENBQUMscUJBQXFCO01BQUMsQ0FDckIsQ0FBQyxlQUNQUixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDa0QsS0FBSyxFQUFDLE9BQU87UUFBQWpKLFFBQUEsRUFDNUJ3STtNQUFVLENBQ1AsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBdE4sS0FBSyxDQUFDb08sTUFBTSxLQUFLLE1BQU0saUJBQ3RCdEssdURBQUEsQ0FBQzRHLCtDQUFJO01BQUNsRCxTQUFTO01BQUN0QyxFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBTixRQUFBLGdCQUM1QmxCLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUEvRixRQUFBLEVBQ2RWLENBQUMsQ0FBQywyQkFBMkI7TUFBQyxDQUMzQixDQUFDLGVBQ1BOLHVEQUFBLENBQUM0RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUNrRCxLQUFLLEVBQUMsT0FBTztRQUFBakosUUFBQSxHQUFDLEdBQzdCLEVBQUN5SSxXQUFXO01BQUEsQ0FDVCxDQUFDO0lBQUEsQ0FDSCxDQUNQLEVBQ0FGLFdBQVcsR0FBRyxDQUFDLGlCQUNkdkosdURBQUEsQ0FBQzRHLCtDQUFJO01BQUNsRCxTQUFTO01BQUN0QyxFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBTixRQUFBLGdCQUM1QmxCLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUEvRixRQUFBLEVBQ2RWLENBQUMsQ0FBQyx1QkFBdUI7TUFBQyxDQUN2QixDQUFDLGVBQ1BSLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUNrRCxLQUFLLEVBQUMsT0FBTztRQUFBakosUUFBQSxFQUM1QnVJO01BQVcsQ0FDUixDQUFDO0lBQUEsQ0FDSCxDQUNQLGVBQ0R6SixzREFBQSxDQUFDbUosOERBQU8sSUFBRSxDQUFDLGVBQ1hqSix1REFBQSxDQUFDNEcsK0NBQUk7TUFBQ2xELFNBQVM7TUFBQ3RDLEVBQUUsRUFBRTtRQUFFQyxFQUFFLEVBQUUsQ0FBQztRQUFFQyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUFOLFFBQUEsZ0JBQ25DbEIsc0RBQUEsQ0FBQzhHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQS9GLFFBQUEsRUFDZFYsQ0FBQyxDQUFDLHFCQUFxQjtNQUFDLENBQ3JCLENBQUMsZUFDUFIsc0RBQUEsQ0FBQzhHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2tELEtBQUssRUFBQyxPQUFPO1FBQUFqSixRQUFBLEVBQzVCOUUsS0FBSyxDQUFDb08sTUFBTSxLQUFLLE1BQU0sR0FBRyxPQUFPLEdBQUdiO01BQVcsQ0FDNUMsQ0FBQztJQUFBLENBQ0gsQ0FBQztFQUFBLENBQ0osQ0FBQztBQUVWO0FBRUFMLGlCQUFpQixDQUFDdEgsU0FBUyxHQUFHO0VBQzVCNUYsS0FBSyxFQUFFaUQsdURBQWUsQ0FBQztJQUNyQitLLFFBQVEsRUFBRS9LLDBEQUFnQjtJQUMxQmlMLGVBQWUsRUFBRWpMLDBEQUFnQjtJQUNqQ2tMLFlBQVksRUFBRWxMLDBEQUFnQjtJQUM5Qm1MLE1BQU0sRUFBRW5MLDBEQUFnQnFMO0VBQzFCLENBQUMsQ0FBQztFQUNGN08sTUFBTSxFQUFFd0QsMERBQWdCO0VBQ3hCa0ssT0FBTyxFQUFFbEsseURBQWlCLENBQUM5QyxNQUFNO0FBQ25DLENBQUM7QUFFRCxpRUFBZStNLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pHTjtBQUNTO0FBQ1k7QUFDUjtBQUNRO0FBQUE7QUFFL0MsU0FBU3dCLGtCQUFrQkEsQ0FBQTFQLElBQUEsRUFJeEI7RUFBQSxJQUp5QjtJQUMxQjJQLGFBQWE7SUFDYkMsbUJBQW1CO0lBQ25CQztFQUNGLENBQUMsR0FBQTdQLElBQUE7RUFDQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixvQkFDRVcsdURBQUEsQ0FBQUUsdURBQUE7SUFBQWMsUUFBQSxnQkFDRWxCLHNEQUFBLENBQUNpRyxpREFBTTtNQUNMOUUsU0FBUyxFQUFFckIsbUVBQTBCO01BQ3JDcUwsT0FBTyxFQUFDLFVBQVU7TUFDbEJDLElBQUksRUFBQyxPQUFPO01BQ1p4SixPQUFPLEVBQUVtSixhQUFjO01BQUE3SixRQUFBLEVBRXRCVixDQUFDLENBQUMsOEJBQThCO0lBQUMsQ0FDNUIsQ0FBQyxlQUNUUixzREFBQSxDQUFDaUcsaURBQU07TUFDTDlFLFNBQVMsRUFBRXJCLG1FQUEwQjtNQUNyQ3FMLE9BQU8sRUFBQyxVQUFVO01BQ2xCQyxJQUFJLEVBQUMsT0FBTztNQUNaeEosT0FBTyxFQUFFb0osbUJBQW9CO01BQUE5SixRQUFBLEVBRTVCVixDQUFDLENBQUMsOEJBQThCO0lBQUMsQ0FDNUIsQ0FBQyxlQUNUUixzREFBQSxDQUFDaUcsaURBQU07TUFDTDlFLFNBQVMsRUFBRXJCLG1FQUEwQjtNQUNyQ3FMLE9BQU8sRUFBQyxVQUFVO01BQ2xCQyxJQUFJLEVBQUMsT0FBTztNQUNaeEosT0FBTyxFQUFFcUosbUJBQW9CO01BQUEvSixRQUFBLEVBRTVCVixDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQztFQUFBLENBQ1QsQ0FBQztBQUVQO0FBRUFzSyxrQkFBa0IsQ0FBQzlJLFNBQVMsR0FBRztFQUM3QitJLGFBQWEsRUFBRTFMLHdEQUFjO0VBQzdCMkwsbUJBQW1CLEVBQUUzTCx3REFBYztFQUNuQzRMLG1CQUFtQixFQUFFNUwsd0RBQWM0QztBQUNyQyxDQUFDO0FBRUQsaUVBQWU2SSxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hEUDtBQUNTO0FBQ087QUFDSztBQUNLO0FBQ0U7QUFDUDtBQUFBO0FBRS9DLFNBQVNPLFlBQVlBLENBQUFqUSxJQUFBLEVBQTZCO0VBQUEsSUFBNUI7SUFBRWdCLEtBQUs7SUFBRVAsTUFBTTtJQUFFME47RUFBUSxDQUFDLEdBQUFuTyxJQUFBO0VBQzlDLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLG9CQUNFVyx1REFBQSxDQUFBRSx1REFBQTtJQUFBYyxRQUFBLGdCQUNFaEIsdURBQUEsQ0FBQ21DLDhDQUFHO01BQUNsQixTQUFTLEVBQUVyQixvRUFBMkI7TUFBQ3dCLEVBQUUsRUFBRTtRQUFFQyxFQUFFLEVBQUUsQ0FBQztRQUFFZ0ssRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBckssUUFBQSxnQkFDL0RsQixzREFBQTtRQUFBa0IsUUFBQSxFQUFLVixDQUFDLENBQUMsNkJBQTZCO01BQUMsQ0FBSyxDQUFDLGVBQzNDUixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ2xELFNBQVM7UUFBQTFDLFFBQUEsZUFDYmxCLHNEQUFBLENBQUM4RywrQ0FBSTtVQUNISSxFQUFFLEVBQUUsRUFBRztVQUNQL0YsU0FBUyxFQUFFckIsMEVBQWlDO1VBQzVDd0IsRUFBRSxFQUFFO1lBQUVFLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFDZHlGLElBQUk7VUFBQS9GLFFBQUEsZUFFSmxCLHNEQUFBLENBQUNzSiwwREFBaUI7WUFDaEJsTixLQUFLLEVBQUVBLEtBQU07WUFDYlAsTUFBTSxFQUFFQSxNQUFPO1lBQ2YwTixPQUFPLEVBQUVBO1VBQVEsQ0FDbEI7UUFBQyxDQUNFO01BQUMsQ0FDSCxDQUFDO0lBQUEsQ0FDSixDQUFDLGVBQ052SixzREFBQSxDQUFDcUMsOENBQUc7TUFBQzZFLEVBQUUsRUFBRSxFQUFHO01BQUM1RixFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBTixRQUFBLGVBQ3pCbEIsc0RBQUEsQ0FBQzhLLDJEQUFrQjtRQUNqQkMsYUFBYSxFQUFFQSxDQUFBLEtBQU0sQ0FBQyxDQUFFO1FBQ3hCQyxtQkFBbUIsRUFBRUEsQ0FBQSxLQUFNLENBQUMsQ0FBRTtRQUM5QkMsbUJBQW1CLEVBQUVBLENBQUEsS0FBTSxDQUFDO01BQUUsQ0FDL0I7SUFBQyxDQUNDLENBQUM7RUFBQSxDQUNOLENBQUM7QUFFUDtBQUVBSSxZQUFZLENBQUNySixTQUFTLEdBQUc7RUFDdkI1RixLQUFLLEVBQUVpRCwwREFBZ0I7RUFDdkJ4RCxNQUFNLEVBQUV3RCwwREFBZ0I7RUFDeEJrSyxPQUFPLEVBQUVsSyx5REFBaUIsQ0FBQzlDLE1BQU07QUFDbkMsQ0FBQztBQUVELGlFQUFlOE8sWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUNhO0FBQ0w7QUFDWTtBQUNSO0FBQ1c7QUFDZTtBQUNsQjtBQUFBO0FBRS9DLFNBQVNNLGFBQWFBLENBQUF2USxJQUFBLEVBQThDO0VBQUEsSUFBN0M7SUFBRW1PLE9BQU87SUFBRXFDLEtBQUs7SUFBRUMsZUFBZTtJQUFFaFE7RUFBTyxDQUFDLEdBQUFULElBQUE7RUFDaEUsTUFBTTtJQUFFb0Y7RUFBRSxDQUFDLEdBQUdqQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDdU0sY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHM00sK0NBQVEsQ0FDbERzTSxzRUFDRixDQUFDO0VBQ0QsTUFBTU0sYUFBYSxHQUFHekMsT0FBTyxFQUFFMEMsS0FBSyxDQUFDLENBQUMsRUFBRUgsY0FBYyxDQUFDO0VBQ3ZELE1BQU1JLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3ZCLElBQUlOLEtBQUssR0FBR3JDLE9BQU8sQ0FBQzlNLE1BQU0sRUFBRTtNQUMxQm9QLGVBQWUsQ0FBQyxDQUFDO0lBQ25CO0lBQ0FFLGlCQUFpQixDQUFDRCxjQUFjLEdBQUdKLHNFQUF3QixDQUFDO0VBQzlELENBQUM7RUFFRCxNQUFNUyxVQUFVLEdBQUdBLENBQUEsS0FBTUosaUJBQWlCLENBQUNMLHNFQUF3QixDQUFDO0VBRXBFLG9CQUNFeEwsdURBQUEsQ0FBQUUsdURBQUE7SUFBQWMsUUFBQSxHQUNHOEssYUFBYSxFQUFFL0MsR0FBRyxDQUFFL0ssTUFBTSxpQkFDekI4QixzREFBQSxDQUFDeUwseURBQWdCO01BQWlCdk4sTUFBTSxFQUFFQSxNQUFPO01BQUNyQyxNQUFNLEVBQUVBO0lBQU8sR0FBMUNxQyxNQUFNLENBQUN2QixFQUFxQyxDQUNwRSxDQUFDLEVBQ0Q0TSxPQUFPLEVBQUU5TSxNQUFNLEdBQUdxUCxjQUFjLGdCQUMvQjlMLHNEQUFBLENBQUNpRyxpREFBTTtNQUFDOUUsU0FBUyxFQUFFckIsK0RBQXNCO01BQUM4QixPQUFPLEVBQUVzSyxVQUFXO01BQUFoTCxRQUFBLEVBQzNEVixDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQyxHQUVULEVBQ0QsRUFDQXdMLGFBQWEsRUFBRXZQLE1BQU0sR0FBR2lQLHNFQUF3QixJQUNqRE0sYUFBYSxFQUFFdlAsTUFBTSxLQUFLbVAsS0FBSyxnQkFDN0I1TCxzREFBQSxDQUFDaUcsaURBQU07TUFBQzlFLFNBQVMsRUFBRXJCLCtEQUFzQjtNQUFDOEIsT0FBTyxFQUFFdUssVUFBVztNQUFBakwsUUFBQSxFQUMzRFYsQ0FBQyxDQUFDLDBCQUEwQjtJQUFDLENBQ3hCLENBQUMsR0FFVCxFQUNEO0VBQUEsQ0FDRCxDQUFDO0FBRVA7QUFFQW1MLGFBQWEsQ0FBQzNKLFNBQVMsR0FBRztFQUN4QnVILE9BQU8sRUFBRWxLLHlEQUFpQixDQUFDOUMsTUFBTTtBQUNuQyxDQUFDO0FBRUQsaUVBQWVvUCxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25EWTtBQUNMO0FBQ1k7QUFDRztBQUNWO0FBQ087QUFDSjtBQUNIO0FBQ29CO0FBQ2pCO0FBQ3FCO0FBQUE7QUFFaEUsTUFBTWdCLFVBQVUsR0FBR3ZSLElBQUEsSUFLYjtFQUFBLElBTGM7SUFDbEJ3UixZQUFZO0lBQ1pDLFlBQVk7SUFDWkMsY0FBYztJQUNkQztFQUNGLENBQUMsR0FBQTNSLElBQUE7RUFDQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUU5QixJQUFJc04sWUFBWSxFQUFFO0lBQ2hCLG9CQUNFN00sdURBQUEsQ0FBQ2lHLGlEQUFNO01BQUM5RSxTQUFTLEVBQUVyQixtRUFBMEI7TUFBQW9CLFFBQUEsRUFDMUNWLENBQUMsQ0FBQyw2QkFBNkI7SUFBQyxDQUMzQixDQUFDO0VBRWI7RUFFQSxvQkFDRU4sd0RBQUEsQ0FBQ1osNERBQUs7SUFDSmdDLEVBQUUsRUFBRTtNQUNGbUQsY0FBYyxFQUFFLGVBQWU7TUFDL0JKLEtBQUssRUFBRTtJQUNULENBQUU7SUFDRmhELFVBQVUsRUFBQyxRQUFRO0lBQ25CbkcsU0FBUyxFQUFDLEtBQUs7SUFBQWdHLFFBQUEsZ0JBRWZsQix1REFBQSxDQUFDaUcsaURBQU07TUFBQzlFLFNBQVMsRUFBRXJCLHVFQUE4QjtNQUFDOEIsT0FBTyxFQUFFbUwsV0FBWTtNQUFBN0wsUUFBQSxFQUNwRTBMLFlBQVksR0FDVHBNLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxHQUNoQ0EsQ0FBQyxDQUFDLDJCQUEyQjtJQUFDLENBQzVCLENBQUMsRUFDUnNNLGNBQWMsaUJBQ2I5TSx1REFBQSxDQUFDaUcsaURBQU07TUFBQzlFLFNBQVMsRUFBRXJCLCtEQUFzQjtNQUFBb0IsUUFBQSxFQUN0Q1YsQ0FBQyxDQUFDLCtCQUErQjtJQUFDLENBQzdCLENBQ1Q7RUFBQSxDQUNJLENBQUM7QUFFWixDQUFDO0FBRUQsTUFBTWlMLGdCQUFnQixHQUFHL1AsS0FBQSxJQUF3QjtFQUFBLElBQXZCO0lBQUV3QyxNQUFNO0lBQUVyQztFQUFPLENBQUMsR0FBQUgsS0FBQTtFQUMxQyxNQUFNO0lBQUU4RTtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNa0IsR0FBRyxHQUFHK0wsOENBQU0sQ0FBQyxDQUFDO0VBQ3BCLE1BQU0sQ0FBQ1csVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBR2hPLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQ2xELE1BQU07SUFBRXlOLFlBQVk7SUFBRUQ7RUFBYSxDQUFDLEdBQUdGLDBFQUFnQixDQUFDeE8sTUFBTSxDQUFDO0VBQy9ELE1BQU1tUCxZQUFZLEdBQUdkLDZEQUFxQixDQUFDMVEsTUFBTSxDQUFDO0VBQ2xELE1BQU1pUixjQUFjLEdBQUdPLFlBQVksR0FBRzVNLEdBQUc7RUFFekMsb0JBQ0VQLHdEQUFBLENBQUM0RywrQ0FBSTtJQUFpQjNGLFNBQVMsRUFBRXJCLDZEQUFvQjtJQUFDOEQsU0FBUztJQUFBMUMsUUFBQSxnQkFDN0RsQix1REFBQSxDQUFDOEcsK0NBQUk7TUFBQ0ksRUFBRSxFQUFFLENBQUU7TUFBQ2xDLE9BQU8sRUFBRSxDQUFFO01BQUNpQyxJQUFJO01BQUM5RixTQUFTLEVBQUVyQixpRUFBd0I7TUFBQW9CLFFBQUEsZUFDL0RsQix1REFBQTtRQUFBa0IsUUFBQSxFQUFLaEQsTUFBTSxDQUFDK0wsV0FBVyxFQUFFcFA7TUFBSSxDQUFLO0lBQUMsQ0FDL0IsQ0FBQyxlQUNQbUYsdURBQUEsQ0FBQzhHLCtDQUFJO01BQUNJLEVBQUUsRUFBRSxDQUFFO01BQUNsQyxPQUFPLEVBQUUsQ0FBRTtNQUFDaUMsSUFBSTtJQUFBLENBRXZCLENBQUMsZUFDUC9HLHdEQUFBLENBQUM0RywrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsRUFBRztNQUFDNUYsRUFBRSxFQUFFO1FBQUVpSyxFQUFFLEVBQUUsQ0FBQztRQUFFL0osRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFDeUYsSUFBSTtNQUFBL0YsUUFBQSxHQUNyQ2hELE1BQU0sQ0FBQ3NQLEtBQUssRUFBRW5VLEtBQUssZ0JBQ2xCNkcsd0RBQUEsQ0FBQUUsd0RBQUE7UUFBQWMsUUFBQSxnQkFDRWhCLHdEQUFBLENBQUNtQyw4Q0FBRztVQUFDbEIsU0FBUyxFQUFFckIsc0RBQWE7VUFBQW9CLFFBQUEsR0FDMUJWLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxFQUFDLEdBQ2xDO1FBQUEsQ0FBSyxDQUFDLGVBQ05SLHVEQUFBLENBQUNxQyw4Q0FBRztVQUFDbEIsU0FBUyxFQUFFckIsaUVBQXdCO1VBQUFvQixRQUFBLEVBQUVoRCxNQUFNLENBQUNzUCxLQUFLLEVBQUVuVTtRQUFLLENBQU0sQ0FBQztNQUFBLENBQ3BFLENBQUMsR0FFSDZFLE1BQU0sQ0FBQ3dQLFNBQVMsaUJBQ2QxTix1REFBQTtRQUFNbUIsU0FBUyxFQUFFckIsaUVBQXdCO1FBQUFvQixRQUFBLEVBQ3RDVixDQUFDLENBQUMsMENBQTBDO01BQUMsQ0FDMUMsQ0FFVCxlQUNETix3REFBQTtRQUFNaUIsU0FBUyxFQUFFckIseURBQWdCO1FBQUFvQixRQUFBLEdBQzlCVixDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNuQ1IsdURBQUEsQ0FBQ3NNLG9EQUFXO1VBQUMzQixNQUFNLEVBQUV6TSxNQUFNLENBQUN5TSxNQUFPO1VBQUNpRCxJQUFJO1VBQUNDLFNBQVM7UUFBQSxDQUFFLENBQUM7TUFBQSxDQUNqRCxDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1AzTix3REFBQSxDQUFDNEcsK0NBQUk7TUFBQ2xELFNBQVM7TUFBQTFDLFFBQUEsZ0JBQ2JsQix1REFBQSxDQUFDOEcsK0NBQUk7UUFBQ2xELFNBQVM7UUFBQzFJLFNBQVMsRUFBQyxLQUFLO1FBQUNnTSxFQUFFLEVBQUUsRUFBRztRQUFDMkIsRUFBRSxFQUFFLENBQUU7UUFBQ3hILFVBQVUsRUFBQyxRQUFRO1FBQUM0RixJQUFJO1FBQUEvRixRQUFBLGVBQ3JFbEIsdURBQUEsQ0FBQ3FNLHFEQUFZO1VBQUNuTyxNQUFNLEVBQUVBO1FBQU8sQ0FBRTtNQUFDLENBQzVCLENBQUMsZUFDUDhCLHVEQUFBLENBQUM4RywrQ0FBSTtRQUFDOUIsT0FBTyxFQUFFLENBQUU7UUFBQ2tDLEVBQUUsRUFBRSxFQUFHO1FBQUMyQixFQUFFLEVBQUUsQ0FBRTtRQUFDakYsU0FBUztRQUFDcUQsSUFBSTtRQUFBL0YsUUFBQSxlQUM3Q2xCLHVEQUFBLENBQUM4RywrQ0FBSTtVQUNIRyxJQUFJO1VBQ0pyRCxTQUFTO1VBQ1R1RyxLQUFLLEVBQUMsUUFBUTtVQUNkN0ksRUFBRSxFQUFFO1lBQ0ZtRCxjQUFjLEVBQUU7VUFDbEIsQ0FBRTtVQUNGdEQsU0FBUyxFQUFFckIsb0VBQTJCO1VBQUFvQixRQUFBLEVBRXJDaEQsTUFBTSxDQUFDd1AsU0FBUyxpQkFDZjFOLHVEQUFBLENBQUMyTSxVQUFVO1lBQ1RFLFlBQVksRUFBRUEsWUFBYTtZQUMzQkQsWUFBWSxFQUFFQSxZQUFhO1lBQzNCRSxjQUFjLEVBQUVBLGNBQWU7WUFDL0JDLFdBQVcsRUFBRUEsQ0FBQSxLQUFNSyxhQUFhLENBQUNsUCxNQUFNO1VBQUUsQ0FDMUM7UUFDRixDQUNHO01BQUMsQ0FDSCxDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1A4Qix1REFBQSxDQUFDeU0scURBQVk7TUFDWDVRLE1BQU0sRUFBRUEsTUFBTztNQUNmcUMsTUFBTSxFQUFFaVAsVUFBVztNQUNuQlksT0FBTyxFQUFFQSxDQUFBLEtBQU1YLGFBQWEsQ0FBQyxJQUFJO0lBQUUsQ0FDcEMsQ0FBQztFQUFBLEdBeERPbFAsTUFBTSxDQUFDdkIsRUF5RFosQ0FBQztBQUVYLENBQUM7QUFFRDhPLGdCQUFnQixDQUFDekosU0FBUyxHQUFHO0VBQzNCOUQsTUFBTSxFQUFFbUIsdURBQWUsQ0FBQztJQUN0QjFDLEVBQUUsRUFBRTBDLDBEQUFnQjtJQUNwQm1PLEtBQUssRUFBRW5PLHVEQUFlLENBQUM7TUFDckJoRyxLQUFLLEVBQUVnRywwREFBZ0JxTDtJQUN6QixDQUFDLENBQUM7SUFDRkMsTUFBTSxFQUFFdEwsMERBQWdCO0lBQ3hCMk8scUJBQXFCLEVBQUUzTywwREFBZ0I7SUFDdkM0SyxXQUFXLEVBQUU1Syx1REFBZSxDQUFDO01BQzNCeEUsSUFBSSxFQUFFd0UsMERBQWdCcUw7SUFDeEIsQ0FBQztFQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsaUVBQWVlLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2SUw7QUFDUztBQUMyQjtBQUNmO0FBQUE7QUFFL0MsTUFBTXlDLFlBQVksR0FBRyxFQUFFO0FBRXZCLFNBQVM1QixXQUFXQSxDQUFBbFIsSUFBQSxFQU1qQjtFQUFBLElBTmtCO0lBQ25CdVAsTUFBTTtJQUNOaUQsSUFBSSxHQUFHLEtBQUs7SUFDWkMsU0FBUyxHQUFHLEtBQUs7SUFDakJNLFFBQVEsR0FBRyxLQUFLO0lBQ2hCOUosS0FBSyxHQUFHNko7RUFDVixDQUFDLEdBQUE5UyxJQUFBO0VBQ0MsTUFBTWdULFVBQVUsR0FBRyxHQUFHUCxTQUFTLElBQUkvTiwyRUFBaUMsSUFDbEVxTyxRQUFRLElBQUlyTyx5REFBZSxFQUMzQjtFQUNGLG9CQUNFSSx1REFBQTtJQUFLaUIsU0FBUyxFQUFFckIsdUVBQThCO0lBQUFvQixRQUFBLGdCQUM1Q2xCLHNEQUFBO01BQU1tQixTQUFTLEVBQUVpTixVQUFXO01BQUNHLEtBQUssRUFBRTtRQUFFbEs7TUFBTSxDQUFFO01BQUFuRCxRQUFBLEVBQzNDeUo7SUFBTSxDQUNILENBQUMsRUFDTmlELElBQUksaUJBQ0g1TixzREFBQSxDQUFDaU8sd0VBQWU7TUFDZDlNLFNBQVMsRUFBRXJCLHlEQUFnQjtNQUMzQjhCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNNk0sU0FBUyxDQUFDQyxTQUFTLENBQUNDLFNBQVMsQ0FBQ2hFLE1BQU07SUFBRSxDQUN0RCxDQUNGO0VBQUEsQ0FDRSxDQUFDO0FBRVY7QUFFQTJCLFdBQVcsQ0FBQ3RLLFNBQVMsR0FBRztFQUN0QjJJLE1BQU0sRUFBRXRMLDBEQUFnQjtFQUN4QnVPLElBQUksRUFBRXZPLHdEQUFjO0VBQ3BCd08sU0FBUyxFQUFFeE8sd0RBQWM7RUFDekI4TyxRQUFRLEVBQUU5Tyx3REFBYztFQUN4QmdGLEtBQUssRUFBRWhGLDBEQUFnQnNMO0FBQ3pCLENBQUM7QUFFRCxpRUFBZTJCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4Q2M7QUFDTztBQUNMO0FBQ0o7QUFDRjtBQUNjO0FBQ047QUFDRDtBQUNJO0FBQUE7QUFFL0MsU0FBUzBDLFFBQVFBLENBQUNDLEtBQUssRUFBRTtFQUN2QixNQUFNO0lBQUUvTixRQUFRO0lBQUVsRyxLQUFLO0lBQUVrVTtFQUFNLENBQUMsR0FBR0QsS0FBSztFQUN4QyxvQkFDRWpQLHNEQUFBO0lBQ0VtUCxJQUFJLEVBQUMsVUFBVTtJQUNmQyxNQUFNLEVBQUVwVSxLQUFLLEtBQUtrVSxLQUFNO0lBQ3hCdlMsRUFBRSxFQUFFLFlBQVl1UyxLQUFLLEVBQUc7SUFDeEIsbUJBQWlCLE9BQU9BLEtBQUssRUFBRztJQUFBaE8sUUFBQSxFQUUvQmxHLEtBQUssS0FBS2tVLEtBQUssSUFBSWhPO0VBQVEsQ0FDekIsQ0FBQztBQUVWO0FBRUEsU0FBU21PLHVCQUF1QkEsQ0FBQWpVLElBQUEsRUFRN0I7RUFBQSxJQVI4QjtJQUMvQmtVLFFBQVE7SUFDUnpULE1BQU07SUFDTjBOLE9BQU87SUFDUG5OLEtBQUs7SUFDTHdQLEtBQUs7SUFDTDJELGVBQWU7SUFDZjFEO0VBQ0YsQ0FBQyxHQUFBelEsSUFBQTtFQUNDLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ3ZFLEtBQUssRUFBRXdVLFFBQVEsQ0FBQyxHQUFHcFEsK0NBQVEsQ0FBQyxDQUFDLENBQUM7RUFDckMsTUFBTXFRLFlBQVksR0FBR0EsQ0FBQ0MsQ0FBQyxFQUFFQyxRQUFRLEtBQUs7SUFDcENILFFBQVEsQ0FBQ0csUUFBUSxDQUFDO0VBQ3BCLENBQUM7RUFFRCxNQUFNQyxXQUFXLEdBQUdBLENBQUEsS0FDbEJMLGVBQWUsaUJBQ2JyUCx1REFBQTtJQUFNaUIsU0FBUyxFQUFFckIscUVBQTRCO0lBQUFvQixRQUFBLGdCQUMzQ2xCLHNEQUFBLENBQUMrTyxrRUFBUztNQUFDek4sRUFBRSxFQUFFO1FBQUVxRCxLQUFLLEVBQUU7TUFBVTtJQUFFLENBQUUsQ0FBQyxFQUN0Q25FLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQztFQUFBLENBQ3ZDLENBQ1A7RUFFSCxPQUFPOE8sUUFBUSxnQkFDYnBQLHVEQUFBLENBQUNtQyw4Q0FBRztJQUFDbEIsU0FBUyxFQUFFckIsb0VBQTJCO0lBQUFvQixRQUFBLGdCQUN6Q2xCLHNEQUFBLENBQUNxQyw4Q0FBRztNQUFDZixFQUFFLEVBQUU7UUFBRXlPLFdBQVcsRUFBRSxTQUFTO1FBQUV2TyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUFOLFFBQUEsZUFDekNoQix1REFBQSxDQUFDMk8sMkRBQUk7UUFDSDdULEtBQUssRUFBRUEsS0FBTTtRQUNiK0csUUFBUSxFQUFFME4sWUFBYTtRQUN2Qk8sU0FBUyxFQUFDLE1BQU07UUFDaEIsY0FBVyxtQkFBbUI7UUFDOUJDLGlCQUFpQixFQUFFO1VBQ2pCMUIsS0FBSyxFQUFFO1lBQ0wyQixVQUFVLEVBQUU7VUFDZDtRQUNGLENBQUU7UUFBQWhQLFFBQUEsZ0JBRUZsQixzREFBQSxDQUFDOE8sMERBQUc7VUFBQ2pJLEtBQUssRUFBRXJHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBRTtVQUFDVyxTQUFTLEVBQUVyQiwyREFBaUJxUTtRQUFDLENBQUUsQ0FBQyxlQUNqRW5RLHNEQUFBLENBQUM4TywwREFBRztVQUFDakksS0FBSyxFQUFFckcsQ0FBQyxDQUFDLGdCQUFnQixDQUFFO1VBQUNXLFNBQVMsRUFBRXJCLDJEQUFpQnFRO1FBQUMsQ0FBRSxDQUFDO01BQUEsQ0FDN0Q7SUFBQyxDQUNKLENBQUMsRUFDTFAsV0FBVyxDQUFDLENBQUMsZUFDZDVQLHNEQUFBLENBQUNnUCxRQUFRO01BQUNoVSxLQUFLLEVBQUVBLEtBQU07TUFBQ2tVLEtBQUssRUFBRSxDQUFFO01BQUFoTyxRQUFBLGVBQy9CbEIsc0RBQUEsQ0FBQzJMLHNEQUFhO1FBQ1p2UCxLQUFLLEVBQUVBLEtBQU07UUFDYm1OLE9BQU8sRUFBRUEsT0FBUTtRQUNqQnFDLEtBQUssRUFBRUEsS0FBTTtRQUNiQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDaFEsTUFBTSxFQUFFQTtNQUFPLENBQ2hCO0lBQUMsQ0FDTSxDQUFDLGVBQ1htRSxzREFBQSxDQUFDZ1AsUUFBUTtNQUFDaFUsS0FBSyxFQUFFQSxLQUFNO01BQUNrVSxLQUFLLEVBQUUsQ0FBRTtNQUFBaE8sUUFBQSxlQUMvQmxCLHNEQUFBLENBQUNxTCxxREFBWTtRQUFDalAsS0FBSyxFQUFFQSxLQUFNO1FBQUNQLE1BQU0sRUFBRUEsTUFBTztRQUFDME4sT0FBTyxFQUFFQTtNQUFRLENBQUU7SUFBQyxDQUN4RCxDQUFDO0VBQUEsQ0FDUixDQUFDLGdCQUVOckosdURBQUEsQ0FBQUUsdURBQUE7SUFBQWMsUUFBQSxnQkFDRWxCLHNEQUFBLENBQUM4RywrQ0FBSTtNQUFDRyxJQUFJO01BQUMyQixFQUFFLEVBQUUsRUFBRztNQUFBMUgsUUFBQSxFQUNmME8sV0FBVyxDQUFDO0lBQUMsQ0FDVixDQUFDLGVBQ1A1UCxzREFBQSxDQUFDOEcsK0NBQUk7TUFDSDlCLE9BQU8sRUFBRSxDQUFFO01BQ1hpQyxJQUFJO01BQ0oyQixFQUFFLEVBQUUsQ0FBRTtNQUNOeE0sS0FBSyxFQUFFO1FBQUV3TSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQ2pCekgsU0FBUyxFQUFFckIsb0VBQTJCO01BQUFvQixRQUFBLGVBRXRDbEIsc0RBQUEsQ0FBQzJMLHNEQUFhO1FBQ1p2UCxLQUFLLEVBQUVBLEtBQU07UUFDYm1OLE9BQU8sRUFBRUEsT0FBUTtRQUNqQnFDLEtBQUssRUFBRUEsS0FBTTtRQUNiQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDaFEsTUFBTSxFQUFFQTtNQUFPLENBQ2hCO0lBQUMsQ0FDRSxDQUFDLGVBQ1BtRSxzREFBQSxDQUFDOEcsK0NBQUk7TUFBQzlCLE9BQU8sRUFBRSxDQUFFO01BQUNpQyxJQUFJO01BQUMyQixFQUFFLEVBQUUsQ0FBRTtNQUFDeE0sS0FBSyxFQUFFO1FBQUV3TSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUExSCxRQUFBLGVBQzdDbEIsc0RBQUEsQ0FBQ3FMLHFEQUFZO1FBQUNqUCxLQUFLLEVBQUVBLEtBQU07UUFBQ1AsTUFBTSxFQUFFQSxNQUFPO1FBQUMwTixPQUFPLEVBQUVBO01BQVEsQ0FBRTtJQUFDLENBQzVELENBQUM7RUFBQSxDQUNQLENBQ0g7QUFDSDtBQUVBLGlFQUFlOEYsdUJBQXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxR2E7QUFDaEI7QUFDa0M7QUFDdEI7QUFDRztBQUNGO0FBQ1E7QUFDTjtBQUNjO0FBQ1Y7QUFDZDtBQUNPO0FBQ2lCO0FBQUE7QUFFaEUsU0FBUzVILFVBQVVBLENBQUN3SCxLQUFLLEVBQUU7RUFDekIsTUFBTTtJQUFFcFQsTUFBTTtJQUFFTztFQUFNLENBQUMsR0FBRzZTLEtBQUs7RUFDL0IsTUFBTTtJQUFFek87RUFBRSxDQUFDLEdBQUdqQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTW5GLFFBQVEsR0FBR2lOLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQUUvSyxRQUFRO0lBQUVrVSxTQUFTO0lBQUU1STtFQUFhLENBQUMsR0FBR04sd0RBQVcsQ0FDdERVLEtBQUssSUFBS0EsS0FBSyxDQUFDcE0sV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUNsQzJMLHFEQUNGLENBQUM7RUFDRCxNQUFNa0osS0FBSyxHQUFHTCw4REFBUSxDQUFDLENBQUM7RUFDeEIsTUFBTWQsUUFBUSxHQUFHZSxrRUFBYSxDQUFDSSxLQUFLLENBQUNDLFdBQVcsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVELE1BQU0sQ0FBQ0MsZ0JBQWdCLEVBQUVDLGlCQUFpQixDQUFDLEdBQUd6UiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUM3RCxNQUFNbVEsZUFBZSxHQUFHblQsS0FBSyxDQUFDMFUsYUFBYSxFQUFFQyxJQUFJLENBQzlDN1MsTUFBTSxJQUFLQSxNQUFNLENBQUNzUCxLQUFLLEVBQUVoRCxNQUFNLEtBQUssWUFDdkMsQ0FBQztFQUNELE1BQU13RyxtQkFBbUIsR0FBRyxNQUFBQSxDQUFBLEtBQVk7SUFDdEMsTUFBTTVXLFFBQVEsQ0FDWjBELDJEQUFpQixDQUFDO01BQ2hCZCxPQUFPLEVBQUVaLEtBQUssQ0FBQ08sRUFBRTtNQUNqQitCLFlBQVksRUFBRThSLFNBQVM7TUFDdkJsVixPQUFPLEVBQUVnQjtJQUNYLENBQUMsQ0FDSCxDQUFDLENBQUNQLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO01BQ2JtVSxPQUFPLENBQUNDLEdBQUcsQ0FBQ3BVLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUM7RUFDSixDQUFDO0VBRURxRixnREFBUyxDQUFDLE1BQU07SUFDZDZPLG1CQUFtQixDQUFDLENBQUM7RUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLE1BQU1uRixlQUFlLEdBQUdBLENBQUEsS0FDdEJ6UixRQUFRLENBQ04wRCwyREFBaUIsQ0FBQztJQUNoQmQsT0FBTyxFQUFFWixLQUFLLENBQUNPLEVBQUU7SUFDakJ0QixJQUFJLEVBQUVlLEtBQUssQ0FBQytVLG9CQUFvQixHQUFHaFosMkRBQWE7SUFDaERtRCxPQUFPLEVBQUVnQixRQUFRO0lBQ2pCZCxJQUFJLEVBQUU7RUFDUixDQUFDLENBQ0gsQ0FBQztFQUVILG9CQUNFMEUsd0RBQUEsQ0FBQUUsd0RBQUE7SUFBQWMsUUFBQSxnQkFDRWhCLHdEQUFBLENBQUNtQyw4Q0FBRztNQUNGZixFQUFFLEVBQUU7UUFDRjBELE9BQU8sRUFBRTtVQUNQa0MsRUFBRSxFQUFFLENBQUM7VUFDTDBCLEVBQUUsRUFBRSxDQUFDO1VBQ0xDLEVBQUUsRUFBRTtRQUNOO01BQ0YsQ0FBRTtNQUNGMUgsU0FBUyxFQUFFckIsMEVBQWdDO01BQUFvQixRQUFBLGdCQUUzQ2hCLHdEQUFBO1FBQU1pQixTQUFTLEVBQUVyQixpRUFBdUI7UUFBQW9CLFFBQUEsR0FDckNWLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFDLElBQUUsRUFBQytQLHdEQUFnQixDQUFDblUsS0FBSyxDQUFDaU8sT0FBTyxDQUFDLEVBQUMsSUFBRSxFQUFDLEdBQUcsRUFDL0Q3SixDQUFDLENBQUMsd0JBQXdCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNsQ1IsdURBQUEsQ0FBQ3NNLHFEQUFXO1VBQUMzQixNQUFNLEVBQUV2TyxLQUFLLENBQUN1TyxNQUFPO1VBQUNpRCxJQUFJO1VBQUNDLFNBQVM7UUFBQSxDQUFFLENBQUM7TUFBQSxDQUNoRCxDQUFDLEVBQ055QixRQUFRLGlCQUNQdFAsdURBQUEsQ0FBQ2lHLGlEQUFNO1FBQ0wzRSxFQUFFLEVBQUU7VUFBRTBELE9BQU8sRUFBRTtRQUFFLENBQUU7UUFDbkI3RCxTQUFTLEVBQUVyQiw2REFBbUI7UUFDOUI4QixPQUFPLEVBQUVBLENBQUEsS0FBTWlQLGlCQUFpQixDQUFDLENBQUNELGdCQUFnQixDQUFFO1FBQUExUCxRQUFBLEVBRW5EMFAsZ0JBQWdCLEdBQ2JwUSxDQUFDLENBQUMsNEJBQTRCLENBQUMsR0FDL0JBLENBQUMsQ0FBQyw0QkFBNEI7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRSxDQUFDLGVBQ05SLHVEQUFBLENBQUM4RywrQ0FBSTtNQUVIbEQsU0FBUztNQUNUMk4sVUFBVSxFQUFFLENBQUU7TUFDZEMsYUFBYSxFQUFFO1FBQUV0SyxFQUFFLEVBQUUsQ0FBQztRQUFFdUssRUFBRSxFQUFFLENBQUM7UUFBRTdJLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDdkN6SCxTQUFTLEVBQUUsR0FBR3JCLHNFQUEyQixJQUN2Q3dQLFFBQVEsSUFBSSxDQUFDc0IsZ0JBQWdCLEdBQUc5USw4REFBbUIsR0FBRyxFQUFFLEVBQ3ZEO01BQ0h3QixFQUFFLEVBQUU7UUFDRnNRLGFBQWEsRUFBRTtVQUNiaEosRUFBRSxFQUFFLEtBQUs7VUFDVEMsRUFBRSxFQUFFO1FBQ04sQ0FBQztRQUNEN0QsT0FBTyxFQUFFO1VBQ1BrQyxFQUFFLEVBQUUsQ0FBQztVQUNMMEIsRUFBRSxFQUFFLENBQUM7VUFDTEMsRUFBRSxFQUFFO1FBQ047TUFDRixDQUFFO01BQUEzSCxRQUFBLGVBRUZsQix1REFBQSxDQUFDcVAsaUVBQXVCO1FBQ3RCQyxRQUFRLEVBQUVBLFFBQVM7UUFDbkJ6VCxNQUFNLEVBQUVBLE1BQU87UUFDZk8sS0FBSyxFQUFFQSxLQUFNO1FBQ2JtTixPQUFPLEVBQUUrRyx1REFBZSxDQUFDMUksWUFBWSxFQUFFeEwsS0FBSyxDQUFDTyxFQUFFLENBQUU7UUFDakRpUCxLQUFLLEVBQUV4UCxLQUFLLENBQUN5VixhQUFjO1FBQzNCdEMsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQzFELGVBQWUsRUFBRUE7TUFBZ0IsQ0FDbEM7SUFBQyxHQTNCR3pQLEtBQUssQ0FBQ08sRUE0QlAsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUVQO0FBRUE4SyxVQUFVLENBQUN6RixTQUFTLEdBQUc7RUFDckJuRyxNQUFNLEVBQUV3RCwwREFBZ0I7RUFDeEJqRCxLQUFLLEVBQUVpRCwwREFBZ0J1TDtBQUN6QixDQUFDO0FBRUQsaUVBQWVuRCxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxSHpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNZO0FBQ3FCO0FBQzZCO0FBQzFDO0FBQUE7QUFFdkQsTUFBTXlLLFlBQVksR0FBRzlXLElBQUEsSUFBc0M7RUFBQSxJQUFyQztJQUFFK1csTUFBTTtJQUFFQyxRQUFRO0lBQUVDO0VBQVcsQ0FBQyxHQUFBalgsSUFBQTtFQUNwRCxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUMrUyxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHcFQscURBQWMsQ0FBQyxFQUFFLENBQUM7RUFDdEQsTUFBTSxDQUFDcVQsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBR3RULHFEQUFjLENBQUMsRUFBRSxDQUFDO0VBQ2hELE1BQU07SUFBRXVULE1BQU07SUFBRUMsTUFBTTtJQUFFQyxPQUFPO0lBQUVDLGVBQWU7SUFBRUM7RUFBYyxDQUFDLEdBQUdYLE1BQU07RUFDMUUsTUFBTXRYLElBQUksR0FBR3pCLDREQUFvQixDQUFDSSxPQUFPO0VBQ3pDLE1BQU13QixLQUFLLEdBQUcyWCxNQUFNLENBQUM5WCxJQUFJLENBQUM7RUFDMUIsTUFBTWtZLEtBQUssR0FBR0gsT0FBTyxDQUFDL1gsSUFBSSxDQUFDLElBQUltWSxPQUFPLENBQUNOLE1BQU0sQ0FBQzdYLElBQUksQ0FBQyxDQUFDO0VBQ3BELE1BQU1vWSxVQUFVLEdBQUdMLE9BQU8sQ0FBQy9YLElBQUksQ0FBQyxJQUFJNlgsTUFBTSxDQUFDN1gsSUFBSSxDQUFDO0VBRWhEc0Usc0RBQWUsQ0FBQyxNQUFNO0lBQ3BCLElBQUltVCxVQUFVLEtBQUssRUFBRSxFQUFFO01BQ3JCRyxVQUFVLENBQUN6WCxLQUFLLEdBQUcsQ0FBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO01BQ2hDLE9BQU9rWSxTQUFTO0lBQ2xCO0lBRUFqQiwrR0FBMEIsQ0FBQ0csUUFBUSxFQUFFRSxVQUFVLEVBQUdhLE9BQU8sSUFBSztNQUM1RCxJQUFJQyxVQUFVLEdBQUcsRUFBRTtNQUVuQixJQUFJcFksS0FBSyxFQUFFO1FBQ1RvWSxVQUFVLEdBQUcsQ0FBQ3BZLEtBQUssQ0FBQztNQUN0QjtNQUVBLElBQUltWSxPQUFPLEVBQUU7UUFDWEMsVUFBVSxHQUFHLENBQUMsR0FBR0EsVUFBVSxFQUFFLEdBQUdELE9BQU8sQ0FBQztNQUMxQztNQUVBVixVQUFVLENBQUNXLFVBQVUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFDRixPQUFPRixTQUFTO0VBQ2xCLENBQUMsRUFBRSxDQUFDbFksS0FBSyxFQUFFc1gsVUFBVSxDQUFDLENBQUM7RUFFdkIsb0JBQ0V0UyxzREFBQSxDQUFDK1IsdURBQVk7SUFDWGxYLElBQUksRUFBRUEsSUFBSztJQUNYMlgsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCYSxZQUFZO0lBQ1pDLFFBQVE7SUFDUkMsa0JBQWtCO0lBQ2xCQyxxQkFBcUI7SUFDckJ4WSxLQUFLLEVBQUVBLEtBQU07SUFDYnlZLE1BQU0sRUFBRUEsQ0FBQSxLQUFNWixlQUFlLENBQUNoWSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBRTtJQUNoRDZZLGNBQWMsRUFBR0MsTUFBTSxJQUFLO01BQzFCO01BQ0EsSUFBSSxPQUFPQSxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQzlCLE9BQU9BLE1BQU07TUFDZjtNQUNBO01BQ0EsSUFBSUEsTUFBTSxDQUFDckIsVUFBVSxFQUFFO1FBQ3JCLE9BQU9xQixNQUFNLENBQUNyQixVQUFVO01BQzFCO01BQ0E7TUFDQSxPQUFPcUIsTUFBTSxDQUFDOVksSUFBSTtJQUNwQixDQUFFO0lBQ0ZrSCxRQUFRLEVBQUVBLENBQUNnQixLQUFLLEVBQUU0TSxRQUFRLEtBQUs7TUFDN0IsTUFBTWlFLFFBQVEsR0FBR2pFLFFBQVEsRUFBRTJDLFVBQVUsSUFBSTNDLFFBQVEsRUFBRTlVLElBQUksSUFBSThVLFFBQVE7TUFDbkU4QyxVQUFVLENBQUNtQixRQUFRLEdBQUcsQ0FBQ0EsUUFBUSxFQUFFLEdBQUdwQixPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDO01BQ3ZETSxhQUFhLENBQUNqWSxJQUFJLEVBQUUrWSxRQUFRLENBQUM7SUFDL0IsQ0FBRTtJQUNGQyxhQUFhLEVBQUVBLENBQUM5USxLQUFLLEVBQUUrUSxhQUFhLEtBQUs7TUFDdkN2QixhQUFhLENBQUN1QixhQUFhLENBQUM7SUFDOUIsQ0FBRTtJQUNGQyxhQUFhLEVBQUVBLENBQUN2QixPQUFPLEVBQUV0VyxNQUFNLEtBQUs7TUFDbEMsTUFBTTtRQUFFb1c7TUFBVyxDQUFDLEdBQUdwVyxNQUFNO01BQzdCLE1BQU04WCxRQUFRLEdBQUcsQ0FBQyxHQUFHeEIsT0FBTyxDQUFDO01BQzdCO01BQ0EsTUFBTXlCLFVBQVUsR0FBR3pCLE9BQU8sQ0FBQzBCLElBQUksQ0FDNUJQLE1BQU0sSUFBS3JCLFVBQVUsS0FBS3FCLE1BQU0sQ0FBQ1EsS0FDcEMsQ0FBQztNQUNELElBQUk3QixVQUFVLEtBQUssRUFBRSxJQUFJLENBQUMyQixVQUFVLEVBQUU7UUFDcENELFFBQVEsQ0FBQ3BaLElBQUksQ0FBQztVQUNaMFgsVUFBVTtVQUNWelgsSUFBSSxFQUFFLFdBQVd5WCxVQUFVO1FBQzdCLENBQUMsQ0FBQztNQUNKO01BRUEsT0FBTzBCLFFBQVE7SUFDakIsQ0FBRTtJQUNGSSxXQUFXLEVBQUdsWSxNQUFNLGlCQUNsQjhELHNEQUFBLENBQUM4UixvREFBU0E7SUFDUjtNQUFBLEdBQ0k1VixNQUFNO01BQ1YySyxLQUFLLEVBQUVyRyxDQUFDLENBQUMsZ0NBQWdDLENBQUU7TUFDM0M2VCxTQUFTO01BQ1RDLFFBQVEsRUFBRWpDLFVBQVc7TUFDckJZLFVBQVUsRUFBRUEsVUFBVztNQUN2QkYsS0FBSyxFQUFFQTtJQUFNLENBQ2QsQ0FDRDtJQUNGd0IsWUFBWSxFQUFFQSxDQUFDdEYsS0FBSyxFQUFFMEUsTUFBTSxLQUFLO01BQy9CLE1BQU07UUFBRS9OLEdBQUc7UUFBRSxHQUFHNE87TUFBWSxDQUFDLEdBQUd2RixLQUFLO01BQ3JDO1FBQUE7UUFDRTtRQUNBalAsc0RBQUE7VUFBQSxHQUFrQndVLFdBQVc7VUFBQXRULFFBQUEsZUFDM0JsQixzREFBQSxDQUFDZ1MscURBQVU7WUFBQzdHLE9BQU8sRUFBQyxPQUFPO1lBQUM3SixFQUFFLEVBQUU7Y0FBRXFELEtBQUssRUFBRTtZQUFpQixDQUFFO1lBQUF6RCxRQUFBLEVBQ3pEeVMsTUFBTSxDQUFDOVk7VUFBSSxDQUNGO1FBQUMsR0FITitLLEdBSUw7TUFBQztJQUVUO0VBQUUsQ0FDSCxDQUFDO0FBRU4sQ0FBQztBQUVEc00sWUFBWSxDQUFDbFEsU0FBUyxHQUFHO0VBQ3ZCbVEsTUFBTSxFQUFFOVMsMERBQWdCLENBQUNnVCxVQUFVO0VBQ25DRCxRQUFRLEVBQUUvUywwREFBZ0IsQ0FBQ2dUO0FBQzdCLENBQUM7QUFFRCxpRUFBZUgsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqSUQ7QUFDUztBQVFaO0FBQ29CO0FBQUE7QUFFM0MsTUFBTStDLHlCQUF5QixHQUFHN1osSUFBQSxJQVc1QjtFQUFBLElBWDZCO0lBQ2pDOFosUUFBUTtJQUNSQyxpQkFBaUIsR0FBRyxFQUFFO0lBQ3RCQyxVQUFVLEdBQUcsS0FBSztJQUNsQmxVLFFBQVE7SUFDUmxHLEtBQUs7SUFDTCtHLFFBQVE7SUFDUitRLGFBQWE7SUFDYkMsS0FBSztJQUNMRSxVQUFVO0lBQ1YsR0FBR29DO0VBQ0wsQ0FBQyxHQUFBamEsSUFBQTtFQUNDLE1BQU1rYSxZQUFZLEdBQUdOLDhDQUFNLENBQUNFLFFBQVEsQ0FBQ3JhLElBQUksQ0FBQztFQUMxQyxNQUFNMGEsYUFBYSxHQUFHUixnREFBUSxDQUFDRyxRQUFRLENBQUM7RUFDeEMsTUFBTTdDLFVBQVUsR0FBRzZDLFFBQVEsQ0FBQ00sU0FBUztFQUNyQyxNQUFNQyxpQkFBaUIsR0FBR1AsUUFBUSxDQUFDUSxtQkFBbUI7RUFFdEQsTUFBTUMsZUFBZSxHQUNuQlQsUUFBUSxDQUFDdkMsTUFBTSxFQUFFMUosR0FBRyxDQUFFcEksR0FBRyxLQUFNO0lBQzdCZ0csS0FBSyxFQUFFaEcsR0FBRyxDQUFDZ0csS0FBSztJQUNoQjdMLEtBQUssRUFBRTZGLEdBQUcsQ0FBQ2xFLEVBQUUsQ0FBQ2laLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7RUFFWCxNQUFNQyx3QkFBd0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFalYsR0FBRyxLQUFLO0lBQ2pELE1BQU1rVixVQUFVLEdBQUcvYSxLQUFLLElBQUksRUFBRTtJQUM5QixNQUFNZ2IsbUJBQW1CLEdBQUdELFVBQVUsQ0FBQ3RaLE1BQU0sS0FBS2daLGlCQUFpQjtJQUNuRSxJQUFJOUYsUUFBUTtJQUVaLElBQUltRyxPQUFPLEVBQUU7TUFDWG5HLFFBQVEsR0FBR3FHLG1CQUFtQixHQUFHRCxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEVBQUVsVixHQUFHLENBQUM7SUFDcEUsQ0FBQyxNQUFNO01BQ0w4TyxRQUFRLEdBQUdvRyxVQUFVLENBQUNyYixNQUFNLENBQUV1YixDQUFDLElBQUtBLENBQUMsS0FBS3BWLEdBQUcsQ0FBQztJQUNoRDtJQUVBaVMsYUFBYSxDQUFDd0MsWUFBWSxFQUFFM0YsUUFBUSxDQUFDO0VBQ3ZDLENBQUM7RUFFRCxvQkFDRTNQLHNEQUFBO0lBRUVyRCxFQUFFLEVBQUUsR0FBRzJZLFlBQVksWUFBYTtJQUNoQ25VLFNBQVMsRUFBRWdVLGlCQUFrQjtJQUFBalUsUUFBQSxlQUU3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUNWd0IsUUFBUSxFQUFFZCxVQUFXO01BQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO01BQ3JCZ0MsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUE3UixRQUFBLGdCQUVibEIsc0RBQUEsQ0FBQzhVLG9EQUFTO1FBQUE1VCxRQUFBLEVBQUVxVTtNQUFhLENBQVksQ0FBQyxFQUNyQ3hDLEtBQUssaUJBQUkvUyxzREFBQSxDQUFDNlUseURBQWM7UUFBQTNULFFBQUEsRUFBRStSLFVBQVUsSUFBSTtNQUFHLENBQWlCLENBQUMsZUFDOURqVCxzREFBQSxDQUFDNFUsb0RBQVM7UUFBQTFULFFBQUEsRUFDUHlVLGVBQWUsQ0FBQzFNLEdBQUcsQ0FBRWtOLEVBQUUsaUJBQ3RCblcsc0RBQUEsQ0FBQzJVLDJEQUFnQjtVQUVmOVosSUFBSSxFQUFFeWEsWUFBYTtVQUNuQmMsT0FBTyxlQUNMcFcsc0RBQUEsQ0FBQ3lVLG1EQUFRO1lBQ1BxQixPQUFPLEVBQUU5YSxLQUFLLEVBQUVxYixRQUFRLENBQUNGLEVBQUUsQ0FBQ25iLEtBQUssQ0FBRTtZQUNuQytHLFFBQVEsRUFBR3VVLEVBQUUsSUFDWFQsd0JBQXdCLENBQUNTLEVBQUUsQ0FBQ3BULE1BQU0sQ0FBQzRTLE9BQU8sRUFBRUssRUFBRSxDQUFDbmIsS0FBSztZQUV0RDtZQUFBLEdBQ0lxYTtVQUFJLENBQ1QsQ0FDRjtVQUNEeE8sS0FBSyxFQUFFc1AsRUFBRSxDQUFDdFA7UUFBTSxHQVpYc1AsRUFBRSxDQUFDdFAsS0FhVCxDQUNGO01BQUMsQ0FDTyxDQUFDLEVBQ1gzRixRQUFRO0lBQUEsQ0FDRTtFQUFDLEdBaENUb1UsWUFpQ0YsQ0FBQztBQUVWLENBQUM7QUFFREwseUJBQXlCLENBQUNqVCxTQUFTLEdBQUc7RUFDcENrVCxRQUFRLEVBQUU3ViwwREFBZ0IsQ0FBQ2dULFVBQVU7RUFDckNyWCxLQUFLLEVBQUVxRSx5REFBZTtFQUN0QjhWLGlCQUFpQixFQUFFOVYsMERBQWdCO0VBQ25DK1YsVUFBVSxFQUFFL1Ysd0RBQWM7RUFDMUIwQyxRQUFRLEVBQUUxQyx3REFBYyxDQUFDZ1QsVUFBVTtFQUNuQ25SLFFBQVEsRUFBRTdCLHdEQUFjO0VBQ3hCeVQsYUFBYSxFQUFFelQsd0RBQWM7RUFDN0IwVCxLQUFLLEVBQUUxVCx3REFBYztFQUNyQjRULFVBQVUsRUFBRTVULDBEQUFnQnFMO0FBQzlCLENBQUM7QUFFRCxpRUFBZXVLLHlCQUF5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHZDtBQUNTO0FBTVo7QUFDbUQ7QUFDL0I7QUFBQTtBQUUzQyxNQUFNeUIscUJBQXFCLEdBQUd0YixJQUFBLElBVXhCO0VBQUEsSUFWeUI7SUFDN0I4WixRQUFRO0lBQ1JDLGlCQUFpQixHQUFHLEVBQUU7SUFDdEJDLFVBQVUsR0FBRyxLQUFLO0lBQ2xCbFUsUUFBUTtJQUNSbEcsS0FBSztJQUNMK1gsS0FBSztJQUNMRSxVQUFVO0lBQ1ZILGFBQWE7SUFDYixHQUFHdUM7RUFDTCxDQUFDLEdBQUFqYSxJQUFBO0VBQ0MsTUFBTWthLFlBQVksR0FBR04sOENBQU0sQ0FBQ0UsUUFBUSxDQUFDcmEsSUFBSSxDQUFDO0VBQzFDLE1BQU0wYSxhQUFhLEdBQUdSLGdEQUFRLENBQUNHLFFBQVEsQ0FBQztFQUN4QyxNQUFNN0MsVUFBVSxHQUFHNkMsUUFBUSxDQUFDTSxTQUFTO0VBRXJDLG9CQUNFeFYsc0RBQUE7SUFFRXJELEVBQUUsRUFBRSxHQUFHMlksWUFBWSxZQUFhO0lBQ2hDblUsU0FBUyxFQUFFZ1UsaUJBQWtCO0lBQUFqVSxRQUFBLGVBRTdCaEIsdURBQUEsQ0FBQ3dVLHNEQUFXO01BQUNMLFNBQVM7TUFBQ3RCLEtBQUssRUFBRUEsS0FBTTtNQUFBN1IsUUFBQSxnQkFDbENsQixzREFBQSxDQUFDMlUsMkRBQWdCO1FBQ2Z5QixPQUFPLGVBQ0xwVyxzREFBQSxDQUFDeVUsbURBQVE7VUFDUDVaLElBQUksRUFBRXlhLFlBQWE7VUFDbkJRLE9BQU8sRUFBRSxDQUFDLENBQUM5YSxLQUFNO1VBQ2pCNkwsS0FBSyxlQUFFN0csc0RBQUEsQ0FBQ3lXLDRGQUFPO1lBQUF2VixRQUFBLEVBQUVxVTtVQUFhLENBQVU7VUFDeEM7VUFBQSxHQUNJRjtRQUFJLENBQ1QsQ0FDRjtRQUNEeE8sS0FBSyxlQUFFN0csc0RBQUEsQ0FBQ3lXLDRGQUFPO1VBQUF2VixRQUFBLEVBQUVxVTtRQUFhLENBQVUsQ0FBRTtRQUMxQ1csUUFBUSxFQUFFZCxVQUFXO1FBQ3JCZCxRQUFRLEVBQUVqQztNQUFXLENBQ3RCLENBQUMsRUFDRG5SLFFBQVEsRUFDUjZSLEtBQUssaUJBQUkvUyxzREFBQSxDQUFDNlUseURBQWM7UUFBQTNULFFBQUEsRUFBRStSLFVBQVUsSUFBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRDtFQUFDLEdBckJUcUMsWUFzQkYsQ0FBQztBQUVWLENBQUM7QUFFRG9CLHFCQUFxQixDQUFDMVUsU0FBUyxHQUFHO0VBQ2hDa1QsUUFBUSxFQUFFN1YsMERBQWdCLENBQUNnVCxVQUFVO0VBQ3JDclgsS0FBSyxFQUFFcUUsd0RBQWM7RUFDckI4VixpQkFBaUIsRUFBRTlWLDBEQUFnQjtFQUNuQytWLFVBQVUsRUFBRS9WLHdEQUFjO0VBQzFCNkIsUUFBUSxFQUFFN0Isd0RBQWM7RUFDeEJ5VCxhQUFhLEVBQUV6VCx3REFBYztFQUM3QjBULEtBQUssRUFBRTFULHdEQUFjO0VBQ3JCNFQsVUFBVSxFQUFFNVQsMERBQWdCcUw7QUFDOUIsQ0FBQztBQUVELGlFQUFlZ00scUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pFVjtBQUNTO0FBQ3VDO0FBQy9CO0FBQUE7QUFFM0MsTUFBTUkscUJBQXFCLEdBQUcxYixJQUFBLElBU3hCO0VBQUEsSUFUeUI7SUFDN0I4WixRQUFRO0lBQ1JDLGlCQUFpQixHQUFHLEVBQUU7SUFDdEJDLFVBQVUsR0FBRyxLQUFLO0lBQ2xCdEMsYUFBYTtJQUNiNVIsUUFBUTtJQUNSNlIsS0FBSztJQUNMRSxVQUFVO0lBQ1YsR0FBR29DO0VBQ0wsQ0FBQyxHQUFBamEsSUFBQTtFQUNDLE1BQU1rYSxZQUFZLEdBQUdOLDhDQUFNLENBQUNFLFFBQVEsQ0FBQ3JhLElBQUksQ0FBQztFQUMxQyxNQUFNMGEsYUFBYSxHQUFHUixnREFBUSxDQUFDRyxRQUFRLENBQUM7RUFDeEMsTUFBTTdDLFVBQVUsR0FBRzZDLFFBQVEsQ0FBQ00sU0FBUztFQUVyQyxNQUFNRyxlQUFlLEdBQ25CVCxRQUFRLENBQUN2QyxNQUFNLEVBQUUxSixHQUFHLENBQUVwSSxHQUFHLEtBQU07SUFDN0JnRyxLQUFLLEVBQUVoRyxHQUFHLENBQUNnRyxLQUFLO0lBQ2hCN0wsS0FBSyxFQUFFNkYsR0FBRyxDQUFDbEU7RUFDYixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7RUFFWCxvQkFDRXFELHNEQUFBO0lBRUVyRCxFQUFFLEVBQUUsR0FBRzJZLFlBQVksWUFBYTtJQUNoQ25VLFNBQVMsRUFBRWdVLGlCQUFrQjtJQUFBalUsUUFBQSxlQUU3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUNWd0IsUUFBUSxFQUFFZCxVQUFXO01BQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO01BQ3JCZ0MsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUE3UixRQUFBLGdCQUVibEIsc0RBQUEsQ0FBQzJXLHFEQUFVO1FBQUNoYSxFQUFFLEVBQUUsR0FBRzJZLFlBQVksUUFBUztRQUFBcFUsUUFBQSxFQUFFcVU7TUFBYSxDQUFhLENBQUMsZUFDckV2VixzREFBQSxDQUFDNlcsaURBQU07UUFDTEUsT0FBTyxFQUFFLEdBQUd6QixZQUFZLFFBQVM7UUFDakN6YSxJQUFJLEVBQUV5YSxZQUFhO1FBQ25CM1ksRUFBRSxFQUFFMlksWUFBYTtRQUNqQnpPLEtBQUssRUFBRTBPO1FBQ1A7UUFBQSxHQUNJRixJQUFJO1FBQ1I5RyxLQUFLLEVBQUU7VUFBRXlJLFlBQVksRUFBRTtRQUFHLENBQUU7UUFBQTlWLFFBQUEsRUFFM0J5VSxlQUFlLENBQUMxTSxHQUFHLENBQUVrTixFQUFFLGlCQUN0Qm5XLHNEQUFBLENBQUM0VyxtREFBUTtVQUFnQjViLEtBQUssRUFBRW1iLEVBQUUsQ0FBQ25iLEtBQU07VUFBQWtHLFFBQUEsRUFDdENpVixFQUFFLENBQUN0UDtRQUFLLEdBRElzUCxFQUFFLENBQUN0UCxLQUVSLENBQ1g7TUFBQyxDQUNJLENBQUMsRUFDUjNGLFFBQVE7SUFBQSxDQUNFO0VBQUMsR0EzQlRvVSxZQTRCRixDQUFDO0FBRVYsQ0FBQztBQUVEd0IscUJBQXFCLENBQUM5VSxTQUFTLEdBQUc7RUFDaENrVCxRQUFRLEVBQUU3ViwwREFBZ0IsQ0FBQ2dULFVBQVU7RUFDckM4QyxpQkFBaUIsRUFBRTlWLDBEQUFnQjtFQUNuQytWLFVBQVUsRUFBRS9WLHdEQUFjO0VBQzFCNkIsUUFBUSxFQUFFN0Isd0RBQWM7RUFDeEIwVCxLQUFLLEVBQUUxVCx3REFBYztFQUNyQjRULFVBQVUsRUFBRTVULDBEQUFnQjtFQUM1QnlULGFBQWEsRUFBRXpULHdEQUFjNEM7QUFDL0IsQ0FBQztBQUVELGlFQUFlNlUscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JFVjtBQUNTO0FBUVo7QUFDb0I7QUFBQTtBQUUzQyxNQUFNSyxzQkFBc0IsR0FBRy9iLElBQUEsSUFTekI7RUFBQSxJQVQwQjtJQUM5QjhaLFFBQVE7SUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtJQUN0QkMsVUFBVSxHQUFHLEtBQUs7SUFDbEJsVSxRQUFRO0lBQ1I2UixLQUFLO0lBQ0xFLFVBQVU7SUFDVkgsYUFBYTtJQUNiLEdBQUd1QztFQUNMLENBQUMsR0FBQWphLElBQUE7RUFDQyxNQUFNa2EsWUFBWSxHQUFHTiw4Q0FBTSxDQUFDRSxRQUFRLENBQUNyYSxJQUFJLENBQUM7RUFDMUMsTUFBTTBhLGFBQWEsR0FBR1IsZ0RBQVEsQ0FBQ0csUUFBUSxDQUFDO0VBQ3hDLE1BQU03QyxVQUFVLEdBQUc2QyxRQUFRLENBQUNNLFNBQVM7RUFFckMsTUFBTUcsZUFBZSxHQUNuQlQsUUFBUSxDQUFDdkMsTUFBTSxFQUFFMUosR0FBRyxDQUFFcEksR0FBRyxLQUFNO0lBQzdCZ0csS0FBSyxFQUFFaEcsR0FBRyxDQUFDZ0csS0FBSztJQUNoQjdMLEtBQUssRUFBRTZGLEdBQUcsQ0FBQ2xFLEVBQUUsQ0FBQ2laLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7RUFFWCxvQkFDRTVWLHNEQUFBO0lBRUVyRCxFQUFFLEVBQUUsR0FBRzJZLFlBQVksWUFBYTtJQUNoQ25VLFNBQVMsRUFBRWdVLGlCQUFrQjtJQUFBalUsUUFBQSxlQUU3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUNWd0IsUUFBUSxFQUFFZCxVQUFXO01BQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO01BQ3JCZ0MsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUE3UixRQUFBLGdCQUVibEIsc0RBQUEsQ0FBQzhVLG9EQUFTO1FBQUNuWSxFQUFFLEVBQUUsR0FBRzJZLFlBQVksUUFBUztRQUFBcFUsUUFBQSxFQUFFcVU7TUFBYSxDQUFZLENBQUMsRUFDbEV4QyxLQUFLLGlCQUFJL1Msc0RBQUEsQ0FBQzZVLHlEQUFjO1FBQUEzVCxRQUFBLEVBQUUrUixVQUFVLElBQUk7TUFBRyxDQUFpQixDQUFDLGVBQzlEalQsc0RBQUEsQ0FBQ2tYLHFEQUFVO1FBQ1QsbUJBQWlCLEdBQUc1QixZQUFZLFFBQVM7UUFDekN6YSxJQUFJLEVBQUV5YTtRQUNOO1FBQUEsR0FDSUQsSUFBSTtRQUFBblUsUUFBQSxFQUVQeVUsZUFBZSxDQUFDMU0sR0FBRyxDQUFFa04sRUFBRSxpQkFDdEJuVyxzREFBQSxDQUFDMlUsMkRBQWdCO1VBRWYzWixLQUFLLEVBQUVtYixFQUFFLENBQUNuYixLQUFNO1VBQ2hCb2IsT0FBTyxlQUFFcFcsc0RBQUEsQ0FBQ2lYLGdEQUFLLElBQUUsQ0FBRTtVQUNuQnBRLEtBQUssRUFBRXNQLEVBQUUsQ0FBQ3RQO1FBQU0sR0FIWHNQLEVBQUUsQ0FBQ3RQLEtBSVQsQ0FDRjtNQUFDLENBQ1EsQ0FBQyxFQUNaM0YsUUFBUTtJQUFBLENBQ0U7RUFBQyxHQTVCVG9VLFlBNkJGLENBQUM7QUFFVixDQUFDO0FBRUQ2QixzQkFBc0IsQ0FBQ25WLFNBQVMsR0FBRztFQUNqQ2tULFFBQVEsRUFBRTdWLDBEQUFnQixDQUFDZ1QsVUFBVTtFQUNyQzhDLGlCQUFpQixFQUFFOVYsMERBQWdCO0VBQ25DK1YsVUFBVSxFQUFFL1Ysd0RBQWM7RUFDMUI2QixRQUFRLEVBQUU3Qix3REFBYztFQUN4QjBULEtBQUssRUFBRTFULHdEQUFjO0VBQ3JCNFQsVUFBVSxFQUFFNVQsMERBQWdCO0VBQzVCeVQsYUFBYSxFQUFFelQsd0RBQWM0QztBQUMvQixDQUFDO0FBRUQsaUVBQWVrVixzQkFBc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0VYO0FBQ1M7QUFDa0I7QUFDVjtBQUFBO0FBRTNDLE1BQU1DLGlCQUFpQixHQUFHaGMsSUFBQSxJQU9wQjtFQUFBLElBUHFCO0lBQ3pCOFosUUFBUTtJQUNSQyxpQkFBaUIsR0FBRyxFQUFFO0lBQ3RCQyxVQUFVLEdBQUcsS0FBSztJQUNsQmxVLFFBQVE7SUFDUjRSLGFBQWE7SUFDYixHQUFHdUM7RUFDTCxDQUFDLEdBQUFqYSxJQUFBO0VBQ0MsTUFBTWthLFlBQVksR0FBR04sOENBQU0sQ0FBQ0UsUUFBUSxDQUFDcmEsSUFBSSxDQUFDO0VBQzFDLE1BQU0wYSxhQUFhLEdBQUdSLGdEQUFRLENBQUNHLFFBQVEsQ0FBQztFQUN4QyxNQUFNN0MsVUFBVSxHQUFHNkMsUUFBUSxDQUFDTSxTQUFTO0VBRXJDLG9CQUNFeFYsc0RBQUE7SUFFRXJELEVBQUUsRUFBRSxHQUFHMlksWUFBWSxZQUFhO0lBQ2hDblUsU0FBUyxFQUFFZ1UsaUJBQWtCO0lBQUFqVSxRQUFBLGVBRTdCaEIsdURBQUEsQ0FBQzBVLG9EQUFTO01BQUExVCxRQUFBLGdCQUNSbEIsc0RBQUEsQ0FBQzhSLG9EQUFTO1FBQ1JqWCxJQUFJLEVBQUV5YSxZQUFhO1FBQ25Cek8sS0FBSyxFQUFFME8sYUFBYztRQUNyQlcsUUFBUSxFQUFFZCxVQUFXO1FBQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO1FBQ3JCZ0MsU0FBUztRQUNUO1FBQUEsR0FDSWdCO01BQUksQ0FDVCxDQUFDLEVBQ0RuVSxRQUFRO0lBQUEsQ0FDQTtFQUFDLEdBZlBvVSxZQWdCRixDQUFDO0FBRVYsQ0FBQztBQUVEOEIsaUJBQWlCLENBQUNwVixTQUFTLEdBQUc7RUFDNUJrVCxRQUFRLEVBQUU3ViwwREFBZ0IsQ0FBQ2dULFVBQVU7RUFDckM4QyxpQkFBaUIsRUFBRTlWLDBEQUFnQjtFQUNuQytWLFVBQVUsRUFBRS9WLHdEQUFjO0VBQzFCNkIsUUFBUSxFQUFFN0Isd0RBQWM7RUFDeEJ5VCxhQUFhLEVBQUV6VCx3REFBYzRDO0FBQy9CLENBQUM7QUFFRCxpRUFBZW1WLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pDVjtBQUVmLE1BQU1NLFNBQVMsR0FBR0EsQ0FBQzFjLEtBQUssRUFBRTJjLElBQUksS0FBSztFQUN4QyxNQUFNaEYsTUFBTSxHQUFHZ0YsSUFBSSxDQUFDQyxhQUFhO0VBRWpDLElBQUksQ0FBQzVjLEtBQUssRUFBRSxPQUFPLEtBQUs7RUFFeEIsSUFBSTZjLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOWMsS0FBSyxDQUFDLEVBQUU7SUFDeEIsSUFBSSxDQUFDQSxLQUFLLENBQUN5QixNQUFNLEVBQUUsT0FBTyxLQUFLO0lBQy9CLElBQUkrTCxHQUFHLEdBQUdtUCxJQUFJLENBQUNJLHNCQUFzQixLQUFLLEtBQUs7SUFDL0NwRixNQUFNLENBQUNxRixPQUFPLENBQUUvQixDQUFDLElBQUs7TUFDcEIsSUFBSTBCLElBQUksQ0FBQ0ksc0JBQXNCLEtBQUssS0FBSyxFQUFFO1FBQ3pDdlAsR0FBRyxHQUFHQSxHQUFHLElBQUl4TixLQUFLLENBQUNxYixRQUFRLENBQUNKLENBQUMsQ0FBQztNQUNoQyxDQUFDLE1BQU07UUFDTDtRQUNBek4sR0FBRyxHQUFHQSxHQUFHLElBQUl4TixLQUFLLENBQUNxYixRQUFRLENBQUNKLENBQUMsQ0FBQztNQUNoQztJQUNGLENBQUMsQ0FBQztJQUNGLE9BQU96TixHQUFHO0VBQ1o7RUFDQSxPQUFPbUssTUFBTSxDQUFDMEQsUUFBUSxDQUFDcmIsS0FBSyxFQUFFNGEsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRU0sTUFBTXFDLGVBQWUsR0FBR0EsQ0FBQ04sSUFBSSxFQUFFTyxVQUFVLEVBQUVoWCxRQUFRLEtBQUs7RUFDN0QsSUFBSXlXLElBQUksQ0FBQ1EsVUFBVSxLQUFLLFNBQVMsRUFBRTtJQUNqQyxJQUFJUixJQUFJLENBQUNTLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtNQUN6QyxJQUFJRixVQUFVLEVBQUUsT0FBT2hYLFFBQVE7TUFDL0IsT0FBTyxJQUFJO0lBQ2I7SUFDQTtJQUNBLElBQUksQ0FBQ2dYLFVBQVUsRUFBRTtNQUNmLE9BQU9oWCxRQUFRO0lBQ2pCO0lBQ0EsT0FBTyxJQUFJO0VBQ2I7RUFDQTtFQUNBLElBQUl5VyxJQUFJLENBQUNTLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtJQUN6QyxJQUFJLENBQUNGLFVBQVUsRUFBRSxPQUFPaFgsUUFBUTtJQUNoQyxPQUFPLElBQUk7RUFDYjtFQUNBLElBQUlnWCxVQUFVLEVBQUUsT0FBT2hYLFFBQVE7RUFDL0IsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVNLE1BQU04VCxNQUFNLEdBQUlxRCxJQUFJLElBQUs7RUFDOUIsTUFBTUMsTUFBTSxHQUFHRCxJQUFJLENBQUNFLFdBQVcsQ0FBQyxDQUFDO0VBQ2pDLE9BQU9ELE1BQU0sQ0FBQ0UsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQztBQUM5QyxDQUFDO0FBRU0sTUFBTXpELFFBQVEsR0FBSTBELENBQUM7QUFDeEI7QUFDQUEsQ0FBQyxFQUFFNVIsS0FBSyxFQUFFMlIsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQztBQUV4RCxNQUFNRSxVQUFVLEdBQUlDLE1BQU0sSUFBSztFQUNwQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLEtBQUs7RUFDekI7RUFDQSxJQUFJZCxLQUFLLENBQUNDLE9BQU8sQ0FBQ2EsTUFBTSxDQUFDLEVBQUUsT0FBT0EsTUFBTSxDQUFDbGMsTUFBTSxHQUFHLENBQUM7RUFDbkQsSUFBSSxPQUFPa2MsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPQSxNQUFNLENBQUNsYyxNQUFNLEdBQUcsQ0FBQztFQUN4RCxJQUFJLE9BQU9rYyxNQUFNLEtBQUssUUFBUSxFQUFFLE9BQU9BLE1BQU0sR0FBRyxDQUFDO0VBQ2pELElBQUksT0FBT0EsTUFBTSxLQUFLLFNBQVMsRUFBRSxPQUFPQSxNQUFNO0VBQzlDLE9BQU8sS0FBSztBQUNkLENBQUM7QUFFTSxNQUFNQyxpQkFBaUIsR0FBR0EsQ0FBQ0QsTUFBTSxFQUFFRSxVQUFVLEtBQUs7RUFDdkQsTUFBTUMsV0FBVyxHQUFHakIsS0FBSyxDQUFDQyxPQUFPLENBQUNhLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLEdBQUcsQ0FBQ0EsTUFBTSxDQUFDO0VBRTdELE9BQU9HLFdBQVcsQ0FBQzVFLElBQUksQ0FBRStCLENBQUMsSUFBSztJQUM3QixJQUFJNEIsS0FBSyxDQUFDQyxPQUFPLENBQUNlLFVBQVUsQ0FBQyxFQUFFO01BQzdCLE9BQU9BLFVBQVUsQ0FBQ3hDLFFBQVEsQ0FBQ0osQ0FBQyxDQUFDO0lBQy9CO0lBQ0EsT0FBT0EsQ0FBQyxLQUFLNEMsVUFBVTtFQUN6QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRU0sTUFBTUUsbUJBQW1CLEdBQUlOLENBQUMsSUFBSztFQUN4QyxRQUFRQSxDQUFDLENBQUM5ZCxJQUFJO0lBQ1osS0FBSzBjLDZEQUFxQjtNQUN4QixPQUFPLEtBQUs7SUFDZCxLQUFLSSxvRUFBNEI7TUFDL0IsT0FBTyxJQUFJO0lBQ2IsS0FBS0gsaUVBQXlCO01BQzVCLE9BQU8sRUFBRTtJQUNYLEtBQUtFLG9FQUE0QjtJQUNqQyxLQUFLRCw2REFBcUI7TUFDeEIsT0FBTyxFQUFFO0lBQ1g7TUFDRSxPQUFPLEVBQUU7RUFDYjtBQUNGLENBQUM7QUFFTSxNQUFNeUIsWUFBWSxHQUFHQSxDQUFDQyxHQUFHLEVBQUV0ZSxJQUFJLEtBQUs7RUFDekMsUUFBUUEsSUFBSTtJQUNWLEtBQUswYyw2REFBcUI7TUFDeEIsT0FBTzRCLEdBQUcsS0FBSyxNQUFNO0lBQ3ZCLEtBQUszQixpRUFBeUI7TUFDNUIsT0FBTzJCLEdBQUcsRUFBRUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7SUFDOUIsS0FBSzFCLG9FQUE0QjtJQUNqQyxLQUFLRCw2REFBcUI7TUFDeEIsT0FBTzBCLEdBQUcsSUFBSSxFQUFFO0lBQ2xCLEtBQUt4QixvRUFBNEI7TUFDL0IsT0FBT3dCLEdBQUcsSUFBSSxJQUFJO0lBQ3BCO01BQ0UsT0FBT0EsR0FBRztFQUNkO0FBQ0YsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUdNLE1BQU1FLGlCQUFpQixHQUFHLE1BQU07QUFDaEMsTUFBTUMscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNL0IscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNSSw0QkFBNEIsR0FBRyxpQkFBaUI7QUFDdEQsTUFBTUYscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNRCx5QkFBeUIsR0FBRyxjQUFjO0FBQ2hELE1BQU1FLDRCQUE0QixHQUFHLGlCQUFpQjtBQUN0RCxNQUFNNkIsd0JBQXdCLEdBQUcsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUHJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQU9QO0FBU1A7QUFDMEM7QUFDUTtBQUNFO0FBQ007QUFDUjtBQUFBO0FBRXZFLE1BQU1DLHlCQUF5QixHQUFJQyxZQUFZLElBQUs7RUFDbEQsUUFBUUEsWUFBWTtJQUNsQixLQUFLSCw2REFBcUI7SUFDMUIsS0FBS0QseURBQWlCO01BQUU7UUFDdEIsT0FBTy9CLHFFQUFpQjtNQUMxQjtJQUNBLEtBQUtDLDZEQUFxQjtNQUFFO1FBQzFCLE9BQU9YLHlFQUFxQjtNQUM5QjtJQUNBLEtBQUtlLG9FQUE0QjtNQUFFO1FBQ2pDLE9BQU9OLDBFQUFzQjtNQUMvQjtJQUNBLEtBQUtHLGlFQUF5QjtNQUFFO1FBQzlCLE9BQU9yQyw2RUFBeUI7TUFDbEM7SUFDQSxLQUFLdUMsb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUFFO1FBQzFCLE9BQU9ULHlFQUFxQjtNQUM5QjtJQUNBO01BQVM7UUFDUCxPQUFPM1gsdURBQWM7TUFDdkI7RUFDRjtBQUNGLENBQUM7QUFFRCxNQUFNcWEsb0JBQW9CLEdBQUdwZSxJQUFBLElBT3ZCO0VBQUEsSUFQd0I7SUFDNUIxQixjQUFjO0lBQ2R5SCxTQUFTLEdBQUcsZ0JBQWdCO0lBQzVCZ1UsaUJBQWlCLEdBQUcsZUFBZTtJQUNuQ3NFLFFBQVEsR0FBRyxLQUFLO0lBQ2hCQyxTQUFTLEdBQUcsSUFBSTtJQUNoQnZIO0VBQ0YsQ0FBQyxHQUFBL1csSUFBQTtFQUNDLE1BQU11ZSxVQUFVLEdBQUdBLENBQUNoQyxJQUFJLEVBQUVyQyxZQUFZLEtBQ3BDMkMsa0VBQWUsQ0FDYk4sSUFBSSxFQUNKRCw0REFBUyxDQUFDdkYsTUFBTSxDQUFDUSxNQUFNLENBQUMyQyxZQUFZLENBQUMsRUFBRXFDLElBQUksQ0FBQztFQUM1QztFQUNBaUMsY0FBYyxDQUFDakMsSUFBSSxDQUFDa0MsWUFBWSxDQUNsQyxDQUFDO0VBRUgsTUFBTUQsY0FBYyxHQUFJbkIsQ0FBQyxJQUFLO0lBQzVCLE1BQU1uRCxZQUFZLEdBQUdOLHlEQUFNLENBQUN5RCxDQUFDLENBQUM1ZCxJQUFJLENBQUM7SUFDbkM7SUFDQSxNQUFNdWEsVUFBVSxHQUNiLENBQUNzRSxTQUFTLElBQUloQiw2REFBVSxDQUFDdkcsTUFBTSxDQUFDUSxNQUFNLENBQUMyQyxZQUFZLENBQUMsQ0FBQyxJQUFLbUUsUUFBUTtJQUNyRSxNQUFNSyxzQkFBc0IsR0FBR1IseUJBQXlCLENBQUNiLENBQUMsQ0FBQzlkLElBQUksQ0FBQztJQUVoRSxNQUFNb2YsV0FBVyxHQUFHO01BQ2xCL2UsS0FBSyxFQUFFbVgsTUFBTSxDQUFDUSxNQUFNLENBQUMyQyxZQUFZLENBQUM7TUFDbEN2VCxRQUFRLEVBQUVvUSxNQUFNLENBQUMxQyxZQUFZO01BQzdCZ0UsTUFBTSxFQUFFdEIsTUFBTSxDQUFDNkgsVUFBVTtNQUN6QmpILEtBQUssRUFDSFosTUFBTSxDQUFDUyxPQUFPLENBQUMwQyxZQUFZLENBQUMsSUFBSXRDLE9BQU8sQ0FBQ2IsTUFBTSxDQUFDTyxNQUFNLENBQUM0QyxZQUFZLENBQUMsQ0FBQztNQUN0RXJDLFVBQVUsRUFBRWQsTUFBTSxDQUFDUyxPQUFPLENBQUMwQyxZQUFZLENBQUMsSUFBSW5ELE1BQU0sQ0FBQ08sTUFBTSxDQUFDNEMsWUFBWSxDQUFDO01BQ3ZFeEMsYUFBYSxFQUFFWCxNQUFNLENBQUNXO0lBQ3hCLENBQUM7SUFFRCxvQkFDRTlTLHNEQUFBLENBQUM4WixzQkFBc0I7TUFFckI1RSxRQUFRLEVBQUV1RCxDQUFFO01BQ1p0RCxpQkFBaUIsRUFBRUEsaUJBQWtCO01BQ3JDQyxVQUFVLEVBQUVBO01BQ1o7TUFBQSxHQUNJMkUsV0FBVztNQUFBN1ksUUFBQSxFQUVkdVgsQ0FBQyxDQUFDd0Isa0JBQWtCLEVBQUVoUixHQUFHLENBQUUwTyxJQUFJLElBQUtnQyxVQUFVLENBQUNoQyxJQUFJLEVBQUVyQyxZQUFZLENBQUM7SUFBQyxHQVAvREEsWUFRaUIsQ0FBQztFQUU3QixDQUFDO0VBRUQsb0JBQU90VixzREFBQTtJQUFLbUIsU0FBUyxFQUFFQSxTQUFVO0lBQUFELFFBQUEsRUFBRXhILGNBQWMsQ0FBQ3VQLEdBQUcsQ0FBQzJRLGNBQWM7RUFBQyxDQUFNLENBQUM7QUFDOUUsQ0FBQztBQUVESixvQkFBb0IsQ0FBQ3hYLFNBQVMsR0FBRztFQUMvQnRJLGNBQWMsRUFBRTJGLHlEQUFlLENBQUNnVCxVQUFVO0VBQzFDbFIsU0FBUyxFQUFFOUIsMERBQWdCO0VBQzNCOFYsaUJBQWlCLEVBQUU5ViwwREFBZ0I7RUFDbkNxYSxTQUFTLEVBQUVyYSx3REFBYztFQUN6Qm9hLFFBQVEsRUFBRXBhLHdEQUFjdVA7QUFDMUIsQ0FBQztBQUVELGlFQUFlNEssb0JBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hIVDtBQUNTO0FBT1o7QUFDbUQ7QUFDbkI7QUFFUjtBQUFBO0FBRS9DLE1BQU1VLHNCQUFzQixHQUFHOWUsSUFBQSxJQUt6QjtFQUFBLElBTDBCO0lBQzlCK2UsVUFBVTtJQUNWaEksTUFBTTtJQUNOaUQsVUFBVSxHQUFHLEtBQUs7SUFDbEIvQyxVQUFVLEdBQUc7RUFDZixDQUFDLEdBQUFqWCxJQUFBO0VBQ0MsTUFBTVAsSUFBSSxHQUFHekIsNERBQW9CLENBQUNLLGtCQUFrQjtFQUNwRCxNQUFNO0lBQUVpWixNQUFNO0lBQUVDLE1BQU07SUFBRUMsT0FBTztJQUFFbkQsWUFBWTtJQUFFdUs7RUFBVyxDQUFDLEdBQUc3SCxNQUFNO0VBQ3BFLE1BQU1uWCxLQUFLLEdBQUcyWCxNQUFNLENBQUM5WCxJQUFJLENBQUM7RUFDMUIsTUFBTWtZLEtBQUssR0FBR0gsT0FBTyxDQUFDL1gsSUFBSSxDQUFDLElBQUltWSxPQUFPLENBQUNOLE1BQU0sQ0FBQzdYLElBQUksQ0FBQyxDQUFDO0VBQ3BELE1BQU1vWSxVQUFVLEdBQUdMLE9BQU8sQ0FBQy9YLElBQUksQ0FBQyxJQUFJNlgsTUFBTSxDQUFDN1gsSUFBSSxDQUFDO0VBRWhELG9CQUNFbUYsc0RBQUEsQ0FBQ3FDLDhDQUFHO0lBQUNsQixTQUFTLEVBQUVyQix3REFBZTtJQUFBb0IsUUFBQSxlQUM3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUFDTCxTQUFTO01BQUN0QixLQUFLLEVBQUVBLEtBQU07TUFBQTdSLFFBQUEsZ0JBQ2xDbEIsc0RBQUEsQ0FBQzJVLDJEQUFnQjtRQUNmeUIsT0FBTyxlQUNMcFcsc0RBQUEsQ0FBQ3lVLG1EQUFRO1VBQ1A1WixJQUFJLEVBQUVBLElBQUs7VUFDWGliLE9BQU8sRUFBRSxDQUFDLENBQUM5YSxLQUFNO1VBQ2pCNkwsS0FBSyxlQUFFN0csc0RBQUEsQ0FBQ3lXLDRGQUFPO1lBQUF2VixRQUFBLEVBQUVpWjtVQUFVLENBQVUsQ0FBRTtVQUN2Q3BZLFFBQVEsRUFBRTBOLFlBQWE7VUFDdkJnRSxNQUFNLEVBQUV1RztRQUFXLENBQ3BCLENBQ0Y7UUFDRG5ULEtBQUssZUFBRTdHLHNEQUFBLENBQUN5Vyw0RkFBTztVQUFBdlYsUUFBQSxFQUFFaVo7UUFBVSxDQUFVLENBQUU7UUFDdkNqRSxRQUFRLEVBQUVkLFVBQVc7UUFDckJkLFFBQVEsRUFBRWpDO01BQVcsQ0FDdEIsQ0FBQyxFQUNEVSxLQUFLLGlCQUFJL1Msc0RBQUEsQ0FBQzZVLHlEQUFjO1FBQUEzVCxRQUFBLEVBQUUrUixVQUFVLElBQUk7TUFBRyxDQUFpQixDQUFDO0lBQUEsQ0FDbkQ7RUFBQyxDQUNYLENBQUM7QUFFVixDQUFDO0FBRURpSCxzQkFBc0IsQ0FBQ2xZLFNBQVMsR0FBRztFQUNqQ21ZLFVBQVUsRUFBRTlhLDBEQUFnQixDQUFDZ1QsVUFBVTtFQUN2Q0YsTUFBTSxFQUFFOVMsMERBQWdCLENBQUNnVCxVQUFVO0VBQ25DK0MsVUFBVSxFQUFFL1Ysd0RBQWM7RUFDMUJnVCxVQUFVLEVBQUVoVCx3REFBY3VQO0FBQzVCLENBQUM7QUFFRCxpRUFBZXNMLHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeERyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDTztBQUNLO0FBQUE7QUFFL0MsTUFBTUcsc0JBQXNCLEdBQUdqZixJQUFBLElBQWdCO0VBQUEsSUFBZjtJQUFFK1c7RUFBTyxDQUFDLEdBQUEvVyxJQUFBO0VBQ3hDLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLG9CQUNFVyx1REFBQSxDQUFBRSx1REFBQTtJQUFBYyxRQUFBLGdCQUNFbEIsc0RBQUEsQ0FBQzhSLG9EQUFTO01BQ1J1QyxTQUFTO01BQ1QxWCxFQUFFLEVBQUMsc0JBQXNCO01BQ3pCa0ssS0FBSyxFQUFFckcsQ0FBQyxDQUFDLDBCQUEwQixDQUFFO01BQ3JDeEYsS0FBSyxFQUFFbVgsTUFBTSxDQUFDUSxNQUFNLENBQUMySCxvQkFBcUI7TUFDMUN2WSxRQUFRLEVBQUVvUSxNQUFNLENBQUMxQyxZQUFhO01BQzlCZ0UsTUFBTSxFQUFFdEIsTUFBTSxDQUFDNkgsVUFBVztNQUMxQmpILEtBQUssRUFDSFosTUFBTSxDQUFDUyxPQUFPLENBQUMwSCxvQkFBb0IsSUFDbkN0SCxPQUFPLENBQUNiLE1BQU0sQ0FBQ08sTUFBTSxDQUFDNEgsb0JBQW9CLENBQzNDO01BQ0RySCxVQUFVLEVBQ1JkLE1BQU0sQ0FBQ1MsT0FBTyxDQUFDMEgsb0JBQW9CLElBQ25DbkksTUFBTSxDQUFDTyxNQUFNLENBQUM0SDtJQUNmLENBQ0YsQ0FBQyxlQUNGdGEsc0RBQUEsQ0FBQzhSLG9EQUFTO01BQ1J1QyxTQUFTO01BQ1QxWCxFQUFFLEVBQUMscUJBQXFCO01BQ3hCa0ssS0FBSyxFQUFFckcsQ0FBQyxDQUFDLHlCQUF5QixDQUFFO01BQ3BDeEYsS0FBSyxFQUFFbVgsTUFBTSxDQUFDUSxNQUFNLENBQUM0SCxtQkFBb0I7TUFDekN4WSxRQUFRLEVBQUVvUSxNQUFNLENBQUMxQyxZQUFhO01BQzlCZ0UsTUFBTSxFQUFFdEIsTUFBTSxDQUFDNkgsVUFBVztNQUMxQmpILEtBQUssRUFDSFosTUFBTSxDQUFDUyxPQUFPLENBQUMySCxtQkFBbUIsSUFDbEN2SCxPQUFPLENBQUNiLE1BQU0sQ0FBQ08sTUFBTSxDQUFDNkgsbUJBQW1CLENBQzFDO01BQ0R0SCxVQUFVLEVBQ1JkLE1BQU0sQ0FBQ1MsT0FBTyxDQUFDMkgsbUJBQW1CLElBQ2xDcEksTUFBTSxDQUFDTyxNQUFNLENBQUM2SDtJQUNmLENBQ0YsQ0FBQztFQUFBLENBQ0YsQ0FBQztBQUVQLENBQUM7QUFFREYsc0JBQXNCLENBQUNyWSxTQUFTLEdBQUc7RUFDakNtUSxNQUFNLEVBQUU5UywwREFBZ0IsQ0FBQ2dUO0FBQzNCLENBQUM7QUFFRCxpRUFBZWdJLHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0RyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRXlDO0FBQ047QUFDWTtBQUNTO0FBQ3JCO0FBQ1I7QUFDZ0M7QUFFUjtBQU1EO0FBT1A7QUFDb0I7QUFDVjtBQUNpQztBQUMvQjtBQUFBO0FBRXZELE1BQU1NLGlCQUFpQixHQUFHQSxDQUFDaGdCLElBQUksRUFBRUUsSUFBSSxFQUFFd1gsVUFBVSxLQUFLO0VBQ3BELElBQUl1SSxNQUFNO0VBQ1YsUUFBUWpnQixJQUFJO0lBQ1YsS0FBSzBjLGtGQUFxQjtNQUN4QnVELE1BQU0sR0FBR0gscUNBQVEsQ0FBQyxDQUFDLENBQUNJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDO01BQzFEO0lBQ0YsS0FBS3BELHlGQUE0QjtNQUMvQm1ELE1BQU0sR0FBR0gsdUNBQVUsQ0FBQyxTQUFTNWYsSUFBSSxFQUFFLENBQUM7TUFDcEM7SUFDRixLQUFLeWMsc0ZBQXlCO01BQzVCc0QsTUFBTSxHQUFHSCxzQ0FBUyxDQUFDLENBQUMsQ0FBQ0ssRUFBRSxDQUFDTCx1Q0FBVSxDQUFDLENBQUMsQ0FBQztNQUNyQztJQUNGLEtBQUtqRCx5RkFBNEI7SUFDakMsS0FBS0Qsa0ZBQXFCO01BQ3hCcUQsTUFBTSxHQUFHSCx1Q0FBVSxDQUFDLFNBQVM1ZixJQUFJLEVBQUUsQ0FBQztNQUNwQztJQUNGO01BQ0UrZixNQUFNLEdBQUdILHVDQUFVLENBQUMsU0FBUzVmLElBQUksRUFBRSxDQUFDO01BQ3BDO0VBQ0o7RUFFQSxJQUFJd1gsVUFBVSxFQUFFO0lBQ2R1SSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ3RHLFFBQVEsQ0FBQyxHQUFHelosSUFBSSxjQUFjLENBQUM7RUFDakQ7RUFFQSxPQUFPK2YsTUFBTTtBQUNmLENBQUM7QUFFRCxNQUFNRyxxQkFBcUIsR0FBR0EsQ0FDNUJyaEIsY0FBYyxFQUNkc2hCLGdCQUFnQixFQUNoQkMsbUJBQW1CLEtBQ2hCO0VBQ0gsTUFBTUwsTUFBTSxHQUFHO0lBQ2IsQ0FBQ3hoQiw2REFBb0IsQ0FBQ0MsS0FBSyxHQUFHb2hCLHVDQUNyQixDQUFDLGFBQWEsQ0FBQyxDQUNyQnBoQixLQUFLLENBQUMsZUFBZSxDQUFDLENBQ3RCaWIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO0lBQ2hDLENBQUNsYiw2REFBb0IsQ0FBQ0UsU0FBUyxHQUFHbWhCLHVDQUN6QixDQUFDLGtCQUFrQixDQUFDLENBQzFCbkcsUUFBUSxDQUFDLHdCQUF3QixDQUFDO0lBQ3JDLENBQUNsYiw2REFBb0IsQ0FBQ0csUUFBUSxHQUFHa2hCLHVDQUN4QixDQUFDLGlCQUFpQixDQUFDLENBQ3pCbkcsUUFBUSxDQUFDLHVCQUF1QixDQUFDO0lBQ3BDLENBQUNsYiw2REFBb0IsQ0FBQ0ksT0FBTyxHQUFHaWhCLHVDQUN2QixDQUFDLGVBQWUsQ0FBQyxDQUN2Qm5HLFFBQVEsQ0FBQyxxQkFBcUI7RUFDbkMsQ0FBQztFQUVELElBQUkyRyxtQkFBbUIsRUFBRTtJQUN2QkwsTUFBTSxDQUFDeGhCLDZEQUFvQixDQUFDSyxrQkFBa0IsQ0FBQyxHQUFHZ2hCLHFDQUMzQyxDQUFDLENBQUMsQ0FDTkksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsdUJBQXVCLENBQUM7RUFDM0M7RUFFQSxJQUFJRyxnQkFBZ0IsRUFBRTtJQUNwQkosTUFBTSxDQUFDTixvQkFBb0IsR0FBR0csdUNBQ3JCLENBQUMsa0JBQWtCLENBQUMsQ0FDMUJuRyxRQUFRLENBQUMsd0JBQXdCLENBQUM7SUFFckNzRyxNQUFNLENBQUNMLG1CQUFtQixHQUFHRSx1Q0FDcEIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUN6Qm5HLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztFQUN0QztFQUVBNWEsY0FBYyxDQUFDc2UsT0FBTyxDQUFFUyxDQUFDLElBQUs7SUFDNUIsTUFBTW5ELFlBQVksR0FBR04sOEVBQU0sQ0FBQ3lELENBQUMsQ0FBQzVkLElBQUksQ0FBQztJQUNuQytmLE1BQU0sQ0FBQ3RGLFlBQVksQ0FBQyxHQUFHcUYsaUJBQWlCLENBQUNsQyxDQUFDLENBQUM5ZCxJQUFJLEVBQUU4ZCxDQUFDLENBQUM1ZCxJQUFJLEVBQUU0ZCxDQUFDLENBQUNqRCxTQUFTLENBQUM7SUFFckUsSUFBSWlELENBQUMsQ0FBQ3dCLGtCQUFrQixFQUFFeGQsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNwQ2djLENBQUMsQ0FBQ3dCLGtCQUFrQixDQUFDakMsT0FBTyxDQUFFTCxJQUFJLElBQUs7UUFDckMsTUFBTXVELFdBQVcsR0FBR3ZELElBQUksQ0FBQ2tDLFlBQVk7UUFDckMsTUFBTXNCLGVBQWUsR0FBR25HLDhFQUFNLENBQUNrRyxXQUFXLENBQUNyZ0IsSUFBSSxDQUFDO1FBQ2hEK2YsTUFBTSxDQUFDTyxlQUFlLENBQUMsR0FBR1IsaUJBQWlCLENBQ3pDTyxXQUFXLENBQUN2Z0IsSUFBSSxFQUNoQnVnQixXQUFXLENBQUNyZ0IsSUFBSSxFQUNoQixLQUNGLENBQUMsQ0FDRXVnQixRQUFRLENBQUMsQ0FBQyxDQUNWQyxJQUFJLENBQUMvRixZQUFZLEVBQUU7VUFDbEJnRyxFQUFFLEVBQUdDLFdBQVcsSUFBSztZQUNuQixNQUFNQyxLQUFLLEdBQUc1Qyx5RkFBaUIsQ0FBQzJDLFdBQVcsRUFBRTVELElBQUksQ0FBQ0MsYUFBYSxDQUFDO1lBQ2hFLE9BQU80RCxLQUFLO1VBQ2QsQ0FBQztVQUNENWUsSUFBSSxFQUFHNmUsR0FBRyxJQUFLQSxHQUFHLENBQUNuSCxRQUFRLENBQUMsMkJBQTJCO1FBQ3pELENBQUMsQ0FBQztNQUNOLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsT0FBT21HLHVDQUFVLENBQUNHLE1BQU0sQ0FBQztBQUMzQixDQUFDOztBQUVEO0FBQ0E7QUFDQSxNQUFNYyxZQUFZLEdBQUcsU0FBQUEsQ0FDbkJsTyxLQUFLLEVBQ0w5VCxjQUFjLEVBQ2RpaUIsT0FBTyxFQUNQWCxnQkFBZ0IsRUFDaEJZLE9BQU8sRUFFSjtFQUFBLElBREhDLFlBQVksR0FBQUMsU0FBQSxDQUFBcmYsTUFBQSxRQUFBcWYsU0FBQSxRQUFBNUksU0FBQSxHQUFBNEksU0FBQSxNQUFHLEtBQUs7RUFFcEIsTUFBTUMsYUFBYSxHQUFHO0lBQ3BCLENBQUMzaUIsNkRBQW9CLENBQUNDLEtBQUssR0FBR21VLEtBQUssQ0FBQ25VLEtBQUs7SUFDekMsQ0FBQ0QsNkRBQW9CLENBQUNFLFNBQVMsR0FBR2tVLEtBQUssQ0FBQ3dPLFVBQVU7SUFDbEQsQ0FBQzVpQiw2REFBb0IsQ0FBQ0csUUFBUSxHQUFHaVUsS0FBSyxDQUFDeU8sU0FBUztJQUNoRCxDQUFDN2lCLDZEQUFvQixDQUFDSSxPQUFPLEdBQUdnVSxLQUFLLENBQUNoVSxPQUFPO0lBQzdDLENBQUNKLDZEQUFvQixDQUFDSyxrQkFBa0IsR0FBRytULEtBQUssQ0FBQzBPO0VBQ25ELENBQUM7RUFFRCxJQUFJbEIsZ0JBQWdCLEVBQUU7SUFDcEJlLGFBQWEsQ0FBQ3pCLG9CQUFvQixHQUFHc0IsT0FBTyxFQUFFSSxVQUFVLElBQUksRUFBRTtJQUM5REQsYUFBYSxDQUFDeEIsbUJBQW1CLEdBQUdxQixPQUFPLEVBQUVLLFNBQVMsSUFBSSxFQUFFO0VBQzlEO0VBRUF2aUIsY0FBYyxDQUFDc2UsT0FBTyxDQUFFUyxDQUFDLElBQUs7SUFDNUIsTUFBTW5ELFlBQVksR0FBR04sOEVBQU0sQ0FBQ3lELENBQUMsQ0FBQzVkLElBQUksQ0FBQztJQUNuQyxNQUFNOGQsTUFBTSxHQUFHZ0QsT0FBTyxDQUFDckcsWUFBWSxDQUFDO0lBQ3BDeUcsYUFBYSxDQUFDekcsWUFBWSxDQUFDLEdBQUdxRCxNQUFNLElBQUlJLDJGQUFtQixDQUFDTixDQUFDLENBQUM7SUFFOUQsSUFBSUEsQ0FBQyxDQUFDd0Isa0JBQWtCLEVBQUV4ZCxNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQ3BDZ2MsQ0FBQyxDQUFDd0Isa0JBQWtCLENBQUNqQyxPQUFPLENBQUVMLElBQUksSUFBSztRQUNyQyxNQUFNd0QsZUFBZSxHQUFHbkcsOEVBQU0sQ0FBQzJDLElBQUksQ0FBQ2tDLFlBQVksQ0FBQ2hmLElBQUksQ0FBQztRQUN0RCxNQUFNc2hCLFNBQVMsR0FBR1IsT0FBTyxDQUFDUixlQUFlLENBQUM7UUFDMUMsTUFBTUssS0FBSyxHQUFHNUMseUZBQWlCLENBQUNELE1BQU0sRUFBRWhCLElBQUksQ0FBQ0MsYUFBYSxDQUFDO1FBRTNELElBQUksQ0FBQ2lFLFlBQVksSUFBSUwsS0FBSyxFQUFFO1VBQzFCTyxhQUFhLENBQUNaLGVBQWUsQ0FBQyxHQUM1QmdCLFNBQVMsSUFBSXBELDJGQUFtQixDQUFDcEIsSUFBSSxDQUFDa0MsWUFBWSxDQUFDO1FBQ3ZEO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPa0MsYUFBYTtBQUN0QixDQUFDO0FBRUQsTUFBTUssZ0JBQWdCLEdBQUlqSyxNQUFNLElBQUs7RUFDbkMsTUFBTTtJQUFFTyxNQUFNO0lBQUUySixPQUFPO0lBQUVDO0VBQVksQ0FBQyxHQUFHbkssTUFBTTtFQUUvQ2hRLGdEQUFTLENBQUMsTUFBTTtJQUNkLE1BQU1vYSxVQUFVLEdBQUdoZ0IsTUFBTSxDQUFDQyxJQUFJLENBQUNrVyxNQUFNLENBQUM7SUFDdEMsSUFBSTJKLE9BQU8sSUFBSUUsVUFBVSxDQUFDOWYsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUN4QyxNQUFNK2YsT0FBTyxHQUFHclosUUFBUSxDQUFDc1osYUFBYSxDQUFDLGVBQWVGLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hFLElBQUksQ0FBQ0MsT0FBTyxFQUFFO0lBQ2Q7SUFDQUEsT0FBTyxDQUFDRSxjQUFjLENBQUM7TUFBRUMsUUFBUSxFQUFFLFFBQVE7TUFBRUMsS0FBSyxFQUFFO0lBQVMsQ0FBQyxDQUFDO0VBQ2pFLENBQUMsRUFBRSxDQUFDTixXQUFXLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTU8sVUFBVSxHQUFHemhCLElBQUEsSUFPYjtFQUFBLElBUGM7SUFDbEI4QyxNQUFNO0lBQ054RSxjQUFjO0lBQ2RtQyxNQUFNO0lBQ05paEIsT0FBTztJQUNQQyxRQUFRO0lBQ1JoUDtFQUNGLENBQUMsR0FBQTNTLElBQUE7RUFDQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNeWQsYUFBYSxHQUFHOWUsTUFBTSxFQUFFMGQsT0FBTztFQUNyQztFQUNBLE1BQU1aLGdCQUFnQixHQUFHOWMsTUFBTSxFQUFFK0wsV0FBVyxFQUFFZ1Qsa0JBQWtCLElBQUksS0FBSztFQUN6RSxNQUFNdEIsT0FBTyxHQUFHemQsTUFBTSxFQUFFc1AsS0FBSyxFQUFFMFAsZUFBZSxDQUFDQyxNQUFNLENBQUMsQ0FBQzNVLEdBQUcsRUFBRXlRLEdBQUcsS0FBSztJQUNsRSxNQUFNM0QsWUFBWSxHQUFHTiw4RUFBTSxDQUFDaUUsR0FBRyxDQUFDL0QsUUFBUSxDQUFDcmEsSUFBSSxDQUFDO0lBQzlDMk4sR0FBRyxDQUFDOE0sWUFBWSxDQUFDLEdBQUcwRCxvRkFBWSxDQUFDQyxHQUFHLENBQUNqZSxLQUFLLEVBQUVpZSxHQUFHLENBQUMvRCxRQUFRLENBQUN2YSxJQUFJLENBQUM7SUFDOUQsT0FBTzZOLEdBQUc7RUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFFTixNQUFNMkosTUFBTSxHQUFHcUksaURBQVMsQ0FBQztJQUN2QnVCLGFBQWEsRUFBRUwsWUFBWSxDQUN6QnhkLE1BQU0sQ0FBQ3NQLEtBQUssRUFDWjlULGNBQWMsRUFDZGlpQixPQUFPLEVBQ1BxQixhQUFhLEVBQ2JoQyxnQkFDRixDQUFDO0lBQ0RvQyxnQkFBZ0IsRUFBRXJDLHFCQUFxQixDQUNyQ3JoQixjQUFjLEVBQ2RzaEIsZ0JBQWdCLEVBQ2hCbmYsTUFBTSxDQUFDd2hCLGlDQUNULENBQUM7SUFDRE4sUUFBUSxFQUFHcEssTUFBTSxJQUFLO01BQ3BCO01BQ0ExQixPQUFPLENBQUNDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRXlCLE1BQU0sQ0FBQztNQUMzQyxNQUFNMkssZUFBZSxHQUFHNUIsWUFBWSxDQUNsQ2hpQixjQUFjLEVBQ2RpWixNQUFNLEVBQ05xSyxhQUFhLEVBQ2JoQyxnQkFBZ0IsRUFDaEIsSUFDRixDQUFDO01BQ0QrQixRQUFRLENBQUNPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBQ0RDLGtCQUFrQixFQUFFO0VBQ3RCLENBQUMsQ0FBQzs7RUFFRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0VBQ0FuQixnQkFBZ0IsQ0FBQ2pLLE1BQU0sQ0FBQztFQUV4QixvQkFDRWpTLHdEQUFBO0lBQU02YyxRQUFRLEVBQUU1SyxNQUFNLENBQUNxTCxZQUFhO0lBQUNDLFVBQVU7SUFBQXZjLFFBQUEsZ0JBQzdDbEIsdURBQUEsQ0FBQzBhLDJEQUFpQjtNQUNoQnZJLE1BQU0sRUFBRUEsTUFBTztNQUNmM0UsS0FBSyxFQUFFdFAsTUFBTSxDQUFDc1AsS0FBTTtNQUNwQjRFLFFBQVEsRUFBRXZXLE1BQU0sQ0FBQ2MsRUFBRztNQUNwQnVaLFFBQVEsRUFBRSxDQUFDNEc7SUFBUSxDQUNwQixDQUFDLEVBRUQ5QixnQkFBZ0IsaUJBQ2Y5YSx3REFBQSxDQUFDbUMsOENBQUc7TUFBQW5CLFFBQUEsZ0JBQ0ZsQix1REFBQSxDQUFDZ1MscURBQVU7UUFDVDdHLE9BQU8sRUFBQyxXQUFXO1FBQ25CdVMsWUFBWTtRQUNadmMsU0FBUyxFQUFFckIsNERBQW1CO1FBQUFvQixRQUFBLEVBRTdCVixDQUFDLENBQUMsNEJBQTRCO01BQUMsQ0FDdEIsQ0FBQyxlQUNiUix1REFBQSxDQUFDcWEsZ0VBQXNCO1FBQUNsSSxNQUFNLEVBQUVBO01BQU8sQ0FBRSxDQUFDO0lBQUEsQ0FDdkMsQ0FDTixFQUVBelksY0FBYyxFQUFFK0MsTUFBTSxHQUFHLENBQUMsaUJBQ3pCeUQsd0RBQUEsQ0FBQ21DLDhDQUFHO01BQUFuQixRQUFBLGdCQUNGbEIsdURBQUE7UUFBSW1CLFNBQVMsRUFBRXJCLGtFQUF5QjtRQUFBb0IsUUFBQSxFQUNyQ1YsQ0FBQyxDQUFDLGlDQUFpQztNQUFDLENBQ25DLENBQUMsZUFDTFIsdURBQUEsQ0FBQ3daLDZEQUFvQjtRQUNuQjlmLGNBQWMsRUFBRUEsY0FBZTtRQUMvQmdnQixTQUFTLEVBQUVvRCxPQUFRO1FBQ25CM0ssTUFBTSxFQUFFQTtNQUFPLENBQ2hCLENBQUM7SUFBQSxDQUNDLENBQ04sRUFFQXRXLE1BQU0sQ0FBQ2dpQiwrQkFBK0IsaUJBQ3JDN2QsdURBQUEsQ0FBQ2thLHVGQUFzQjtNQUNyQi9ILE1BQU0sRUFBRUEsTUFBTztNQUNmZ0ksVUFBVSxFQUFFdGUsTUFBTSxDQUFDZ2lCLCtCQUFnQztNQUNuRHhMLFVBQVUsRUFBRXhXLE1BQU0sQ0FBQ3doQixpQ0FBa0M7TUFDckRqSSxVQUFVLEVBQUUsQ0FBQzBIO0lBQVEsQ0FDdEIsQ0FDRixlQUVENWMsd0RBQUEsQ0FBQ21DLDhDQUFHO01BQUNsQixTQUFTLEVBQUVyQix1REFBYztNQUFBb0IsUUFBQSxnQkFDNUJsQix1REFBQSxDQUFDaUcsaURBQU07UUFDTHRMLElBQUksRUFBQyxRQUFRO1FBQ2J3RyxTQUFTLEVBQUVyQix3REFBZTtRQUMxQnFMLE9BQU8sRUFBQyxXQUFXO1FBQ25CeEcsS0FBSyxFQUFDLFNBQVM7UUFDZnlHLElBQUksRUFBQyxPQUFPO1FBQUFsSyxRQUFBLEVBRVhWLENBQUMsQ0FBQyxvQkFBb0I7TUFBQyxDQUNsQixDQUFDLGVBQ1RSLHVEQUFBLENBQUNpRyxpREFBTTtRQUNMOUUsU0FBUyxFQUFFckIsMERBQWlCO1FBQzVCNkUsS0FBSyxFQUFDLFNBQVM7UUFDZnlHLElBQUksRUFBQyxPQUFPO1FBQ1p4SixPQUFPLEVBQUVtTSxPQUFRO1FBQUE3TSxRQUFBLEVBRWhCVixDQUFDLENBQUMsc0JBQXNCO01BQUMsQ0FDcEIsQ0FBQztJQUFBLENBQ04sQ0FBQztFQUFBLENBQ0YsQ0FBQztBQUVYLENBQUM7QUFFRHFjLFVBQVUsQ0FBQzdhLFNBQVMsR0FBRztFQUNyQjlELE1BQU0sRUFBRW1CLDBEQUFnQjtFQUN4QjNGLGNBQWMsRUFBRTJGLHlEQUFlLENBQUNnVCxVQUFVO0VBQzFDeFcsTUFBTSxFQUFFd0QsMERBQWdCLENBQUNnVCxVQUFVO0VBQ25DeUssT0FBTyxFQUFFemQsd0RBQWM7RUFDdkIwZCxRQUFRLEVBQUUxZCx3REFBYyxDQUFDZ1QsVUFBVTtFQUNuQ3RFLE9BQU8sRUFBRTFPLHdEQUFjLENBQUNnVDtBQUMxQixDQUFDO0FBRUQsaUVBQWV3SyxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyVXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNZO0FBQ0E7QUFFQTtBQUNRO0FBQ1o7QUFBQTtBQUUzQyxNQUFNbkMsaUJBQWlCLEdBQUd0ZixJQUFBLElBQW9DO0VBQUEsSUFBbkM7SUFBRStXLE1BQU07SUFBRUMsUUFBUTtJQUFFOEQ7RUFBUyxDQUFDLEdBQUE5YSxJQUFBO0VBQ3ZELE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRW1ULE1BQU07SUFBRUMsTUFBTTtJQUFFQyxPQUFPO0lBQUVuRCxZQUFZO0lBQUV1SztFQUFXLENBQUMsR0FBRzdILE1BQU07RUFFcEUsb0JBQ0VqUyx1REFBQSxDQUFDbUMsOENBQUc7SUFBQ2xCLFNBQVMsRUFBRXJCLHdEQUFlO0lBQUFvQixRQUFBLGdCQUM3QmxCLHNEQUFBLENBQUM4UixvREFBUztNQUNSdUMsU0FBUztNQUNUeFosSUFBSSxFQUFFekIsNERBQW9CLENBQUNDLEtBQU07TUFDakN3TixLQUFLLEVBQUVyRyxDQUFDLENBQUMscUJBQXFCLENBQUU7TUFDaEMwVixRQUFRO01BQ1JsYixLQUFLLEVBQUUyWCxNQUFNLENBQUN2Wiw0REFBb0IsQ0FBQ0MsS0FBSztJQUFFLENBQzNDLENBQUMsRUFDRCxDQUFDRCw0REFBb0IsQ0FBQ0UsU0FBUyxFQUFFRiw0REFBb0IsQ0FBQ0csUUFBUSxDQUFDLENBQUMwUCxHQUFHLENBQ2pFcE8sSUFBSSxpQkFDSG1GLHNEQUFBLENBQUM4UixvREFBUztNQUNSdUMsU0FBUztNQUVUeFosSUFBSSxFQUFFQSxJQUFLO01BQ1hnTSxLQUFLLEVBQUVyRyxDQUFDLENBQUMsaUJBQWlCM0YsSUFBSSxFQUFFLENBQUU7TUFDbENHLEtBQUssRUFBRTJYLE1BQU0sQ0FBQzlYLElBQUksQ0FBRTtNQUNwQnFiLFFBQVEsRUFBRUEsUUFBUztNQUNuQm5VLFFBQVEsRUFBRTBOLFlBQWE7TUFDdkJnRSxNQUFNLEVBQUV1RyxVQUFXO01BQ25CakgsS0FBSyxFQUFFSCxPQUFPLENBQUMvWCxJQUFJLENBQUMsSUFBSW1ZLE9BQU8sQ0FBQ04sTUFBTSxDQUFDN1gsSUFBSSxDQUFDLENBQUU7TUFDOUNvWSxVQUFVLEVBQUVkLE1BQU0sQ0FBQ1MsT0FBTyxDQUFDL1gsSUFBSSxDQUFDLElBQUlzWCxNQUFNLENBQUNPLE1BQU0sQ0FBQzdYLElBQUksQ0FBRTtNQUN4RHlaLFFBQVE7SUFBQSxHQVRIelosSUFVTixDQUVMLENBQUMsZUFDRG1GLHNEQUFBLENBQUNrUyxxREFBWTtNQUFDQyxNQUFNLEVBQUVBLE1BQU87TUFBQ0MsUUFBUSxFQUFFQSxRQUFTO01BQUNDLFVBQVU7SUFBQSxDQUFFLENBQUMsZUFDL0RyUyxzREFBQSxDQUFDcUMsOENBQUc7TUFBQ2xCLFNBQVMsRUFBRXJCLHlEQUFnQjtNQUFBb0IsUUFBQSxFQUFFVixDQUFDLENBQUMseUJBQXlCO0lBQUMsQ0FBTSxDQUFDO0VBQUEsQ0FDbEUsQ0FBQztBQUVWLENBQUM7QUFFRGthLGlCQUFpQixDQUFDMVksU0FBUyxHQUFHO0VBQzVCbVEsTUFBTSxFQUFFOVMsMERBQWdCLENBQUNnVDtBQUMzQixDQUFDO0FBRUQsaUVBQWVxSSxpQkFBaUI7Ozs7Ozs7Ozs7Ozs7O0FDOUR6QixNQUFNdGhCLG9CQUFvQixHQUFHO0VBQ2xDQyxLQUFLLEVBQUUsZ0JBQWdCO0VBQ3ZCQyxTQUFTLEVBQUUscUJBQXFCO0VBQ2hDQyxRQUFRLEVBQUUsb0JBQW9CO0VBQzlCQyxPQUFPLEVBQUUsa0JBQWtCO0VBQzNCQyxrQkFBa0IsRUFBRTtBQUN0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTnlCO0FBQ1M7QUFDTztBQUNLO0FBQ1o7QUFDeUM7QUFLL0M7QUFDdUI7QUFDWTtBQUNmO0FBRUY7QUFBQTtBQUUvQyxNQUFNZ1QsWUFBWSxHQUFHclIsSUFBQSxJQUFpQztFQUFBLElBQWhDO0lBQUVTLE1BQU07SUFBRXFDLE1BQU07SUFBRTZQO0VBQVEsQ0FBQyxHQUFBM1MsSUFBQTtFQUMvQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQ0pyQyxJQUFJLEVBQUU7TUFBRVM7SUFBWSxDQUFDO0lBQ3JCakU7RUFDRixDQUFDLEdBQUc0Tix3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQ3BNLFdBQVcsQ0FBQztFQUM3QyxNQUFNOGlCLGdCQUFnQixHQUFHeGdCLE1BQU0sRUFBRTlCLEtBQUssQ0FBQ3VpQixRQUFRLEtBQUtoaEIsV0FBVyxDQUFDaEIsRUFBRTtFQUNsRSxNQUFNaWlCLGlCQUFpQixHQUFHMWdCLE1BQU0sRUFBRXNQLEtBQUssRUFBRW5VLEtBQUssS0FBS3NFLFdBQVcsQ0FBQ3RFLEtBQUs7RUFDcEUsTUFBTXdsQixpQkFBaUIsR0FDckIsQ0FBQ0QsaUJBQWlCLElBQUlGLGdCQUFnQixLQUN0QzdpQixNQUFNLENBQUNpakIscUNBQXFDO0VBQzlDLE1BQU07SUFBRUM7RUFBVyxDQUFDLEdBQUdyUyx5RUFBZ0IsQ0FBQ3hPLE1BQU0sQ0FBQztFQUUvQyxNQUFNOGdCLE1BQU0sR0FBSW5lLEdBQUcsSUFBSztJQUN0Qm9RLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLFFBQVEsRUFBRXJRLEdBQUcsQ0FBQztFQUM1QixDQUFDO0VBRUQsb0JBQ0VYLHdEQUFBLENBQUNpZSxpREFBTTtJQUNMYyxJQUFJLEVBQUUsQ0FBQyxDQUFDL2dCLE1BQU87SUFDZjZQLE9BQU8sRUFBRUEsT0FBUTtJQUNqQm1SLE1BQU0sRUFBQyxPQUFPO0lBQ2RDLFVBQVUsRUFBRTtNQUFFQyxXQUFXLEVBQUU7SUFBTSxDQUFFO0lBQ25DamUsU0FBUyxFQUFFckIsdUVBQTZCO0lBQUFvQixRQUFBLGdCQUV4Q2hCLHdEQUFBLENBQUNtQyw4Q0FBRztNQUFDbEIsU0FBUyxFQUFFckIsd0RBQWM7TUFBQW9CLFFBQUEsZ0JBQzVCbEIsdURBQUEsQ0FBQ29lLHFEQUFVO1FBQ1RqZCxTQUFTLEVBQUVyQiwwREFBZ0I7UUFDM0I4QixPQUFPLEVBQUVtTSxPQUFRO1FBQ2pCek0sRUFBRSxFQUFFO1VBQUVrZSxLQUFLLEVBQUU7UUFBUSxDQUFFO1FBQ3ZCOWQsUUFBUSxFQUFDLE9BQU87UUFBQVIsUUFBQSxlQUVoQmxCLHVEQUFBLENBQUNKLHNEQUFTLElBQUU7TUFBQyxDQUNILENBQUMsZUFDYkksdURBQUEsQ0FBQ2dTLHFEQUFVO1FBQUM3RyxPQUFPLEVBQUMsSUFBSTtRQUFDdVMsWUFBWTtRQUFDdmMsU0FBUyxFQUFFckIsdURBQWE7UUFBQW9CLFFBQUEsRUFDM0RoRCxNQUFNLEVBQUUrTCxXQUFXLEVBQUVwUDtNQUFJLENBQ2hCLENBQUMsZUFDYnFGLHdEQUFBLENBQUM4UixxREFBVTtRQUFDN0csT0FBTyxFQUFDLE9BQU87UUFBQ3VTLFlBQVk7UUFBQ3ZjLFNBQVMsRUFBRXJCLDBEQUFnQjtRQUFBb0IsUUFBQSxHQUNqRVYsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLEVBQUMsR0FBQyxFQUFDdEMsTUFBTSxFQUFFc1AsS0FBSyxFQUFFblUsS0FBSztNQUFBLENBQzdDLENBQUMsRUFFWjBsQixVQUFVLGlCQUNUN2Usd0RBQUEsQ0FBQUUsd0RBQUE7UUFBQWMsUUFBQSxnQkFDRWxCLHVEQUFBLENBQUNxQyw4Q0FBRztVQUFDbEIsU0FBUyxFQUFFckIsd0RBQWM7VUFBQW9CLFFBQUEsZUFDNUJsQix1REFBQSxDQUFDa2Usc0RBQU07WUFDTDlTLElBQUksRUFBRSxHQUFJO1lBQ1ZtRCxLQUFLLEVBQUU7Y0FBRS9KLE1BQU0sRUFBRSxNQUFNO2NBQUVtYixRQUFRLEVBQUUsTUFBTTtjQUFFdGIsS0FBSyxFQUFFO1lBQU8sQ0FBRTtZQUMzRHJKLEtBQUssRUFBRWtELE1BQU0sQ0FBQzBoQixPQUFRO1lBQ3RCQyxPQUFPLEVBQUM7VUFBYSxDQUN0QjtRQUFDLENBQ0MsQ0FBQyxlQUNON2YsdURBQUE7VUFBR21CLFNBQVMsRUFBRXJCLHdEQUFjO1VBQUFvQixRQUFBLEVBQUVWLENBQUMsQ0FBQyxzQkFBc0I7UUFBQyxDQUFJLENBQUMsZUFDNURSLHVEQUFBLENBQUNnUyxxREFBVTtVQUFDN0csT0FBTyxFQUFDLE9BQU87VUFBQ3VTLFlBQVk7VUFBQ3ZjLFNBQVMsRUFBRXJCLHdEQUFjO1VBQUFvQixRQUFBLEVBQy9EVixDQUFDLENBQUMsdUJBQXVCO1FBQUMsQ0FDakIsQ0FBQztNQUFBLENBQ2IsQ0FDSCxFQUVBLENBQUMzRSxNQUFNLEVBQUVra0IsVUFBVSxJQUFJaEIsVUFBVSxpQkFDaEM3ZSx3REFBQSxDQUFDbUMsOENBQUc7UUFBQ2xCLFNBQVMsRUFBRXJCLHdFQUE4QjtRQUFBb0IsUUFBQSxnQkFDNUNoQix3REFBQSxDQUFDK0YsaURBQU07VUFDTDlFLFNBQVMsRUFBRXJCLDZEQUFtQjtVQUM5QnFMLE9BQU8sRUFBQyxXQUFXO1VBQ25CeEcsS0FBSyxFQUFDLFNBQVM7VUFBQXpELFFBQUEsZ0JBRWZsQix1REFBQSxDQUFDdWUscUVBQVk7WUFBQzdjLFFBQVEsRUFBQztVQUFPLENBQUUsQ0FBQyxFQUNoQ2xCLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztRQUFBLENBQ3RCLENBQUMsZUFDVE4sd0RBQUEsQ0FBQytGLGlEQUFNO1VBQUM5RSxTQUFTLEVBQUVyQix5REFBZTtVQUFBb0IsUUFBQSxnQkFDaENsQix1REFBQSxDQUFDeWUsOERBQVM7WUFBQy9jLFFBQVEsRUFBQztVQUFPLENBQUUsQ0FBQyxFQUM3QmxCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztRQUFBLENBQ2xCLENBQUM7TUFBQSxDQUNOLENBQ04sZUFFRFIsdURBQUE7UUFBS21CLFNBQVMsRUFBRXJCLDZEQUFtQjtRQUFBb0IsUUFBQSxlQUNqQ2xCLHVEQUFBLENBQUNzTSwrREFBVztVQUNWM0IsTUFBTSxFQUFFek0sTUFBTSxFQUFFOUIsS0FBSyxFQUFFdU8sTUFBTztVQUM5QmlELElBQUk7VUFDSkMsU0FBUztVQUNUTSxRQUFRO1VBQ1I5SixLQUFLLEVBQUU7UUFBSSxDQUNaO01BQUMsQ0FDQyxDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBRU5uRSx3REFBQSxDQUFDbUMsOENBQUc7TUFBQ2xCLFNBQVMsRUFBRXJCLG1FQUF5QjtNQUFBb0IsUUFBQSxnQkFDdkNsQix1REFBQSxDQUFDZ1MscURBQVU7UUFDVDdHLE9BQU8sRUFBQyxJQUFJO1FBQ1p1UyxZQUFZO1FBQ1p2YyxTQUFTLEVBQUVyQixtRUFBeUI7UUFBQW9CLFFBQUEsRUFFbkNWLENBQUMsQ0FBQyxvQ0FBb0M7TUFBQyxDQUM5QixDQUFDLEVBQ1p0QyxNQUFNLGlCQUNMOEIsdURBQUEsQ0FBQzZjLDhEQUFVO1FBQ1QzZSxNQUFNLEVBQUVBLE1BQU87UUFDZnhFLGNBQWMsRUFBRUEsY0FBZTtRQUMvQm1DLE1BQU0sRUFBRUEsTUFBTztRQUNmaWhCLE9BQU8sRUFBRStCLGlCQUFrQjtRQUMzQjlCLFFBQVEsRUFBRWlDLE1BQU87UUFDakJqUixPQUFPLEVBQUVBO01BQVEsQ0FDbEIsQ0FDRjtJQUFBLENBQ0UsQ0FBQztFQUFBLENBQ0EsQ0FBQztBQUViLENBQUM7QUFFRHRCLFlBQVksQ0FBQ3pLLFNBQVMsR0FBRztFQUN2Qm5HLE1BQU0sRUFBRXdELDBEQUFnQjtFQUN4Qm5CLE1BQU0sRUFBRW1CLDBEQUFnQjtFQUN4QjBPLE9BQU8sRUFBRTFPLHdEQUFjNEM7QUFDekIsQ0FBQztBQUVELGlFQUFld0ssWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BJRDtBQUNTO0FBQ1k7QUFDRztBQUNIO0FBQUE7QUFFL0MsU0FBU0osWUFBWUEsQ0FBQWpSLElBQUEsRUFBYTtFQUFBLElBQVo7SUFBRThDO0VBQU8sQ0FBQyxHQUFBOUMsSUFBQTtFQUM5QixNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNZ2hCLFFBQVEsR0FBR3JpQixNQUFNLENBQUN3UCxTQUFTO0VBQ2pDLE1BQU04UyxlQUFlLEdBQUd0aUIsTUFBTSxDQUFDc2lCLGVBQWUsQ0FBQ3pQLElBQUksQ0FDaEQwUCxDQUFDLElBQUtBLENBQUMsQ0FBQ2pXLE1BQU0sS0FBSyxXQUN0QixDQUFDO0VBQ0QsTUFBTWtXLHdCQUF3QixHQUFHeGlCLE1BQU0sQ0FBQ3NQLEtBQUssRUFBRWhELE1BQU0sS0FBSyxZQUFZO0VBQ3RFLE1BQU1tVyxpQkFBaUIsR0FBR3ppQixNQUFNLENBQUN5Z0IsUUFBUSxLQUFLLENBQUM7RUFDL0MsTUFBTWlDLGVBQWUsR0FBRzFpQixNQUFNLENBQUNzUCxLQUFLLElBQUl0UCxNQUFNLENBQUNzUCxLQUFLLEVBQUVoRCxNQUFNLEtBQUssVUFBVTtFQUUzRSxvQkFDRXhLLHNEQUFBLENBQUNzZ0Isb0RBQVM7SUFBQ25mLFNBQVMsRUFBRXJCLHNFQUE2QjtJQUFBb0IsUUFBQSxFQUNoRHFmLFFBQVEsZ0JBQ1ByZ0IsdURBQUEsQ0FBQUUsdURBQUE7TUFBQWMsUUFBQSxHQUNHc2YsZUFBZSxpQkFDZHhnQixzREFBQSxDQUFDaUcsaURBQU07UUFDTDlFLFNBQVMsRUFBRSxHQUFHckIsMkRBQWlCLElBQUlBLHNFQUE0QixFQUFHO1FBQUFvQixRQUFBLEVBRWpFVixDQUFDLENBQUMsdUNBQXVDO01BQUMsQ0FDckMsQ0FDVCxFQUNBa2dCLHdCQUF3QixpQkFDdkIxZ0Isc0RBQUEsQ0FBQ2lHLGlEQUFNO1FBQ0w5RSxTQUFTLEVBQUUsR0FBR3JCLDJEQUFpQixJQUFJQSxpRUFBdUIsRUFBRztRQUFBb0IsUUFBQSxFQUU1RFYsQ0FBQyxDQUFDLGlDQUFpQztNQUFDLENBQy9CLENBQ1QsRUFDQW1nQixpQkFBaUIsaUJBQ2hCM2dCLHNEQUFBLENBQUNpRyxpREFBTTtRQUNMOUUsU0FBUyxFQUFFLEdBQUdyQiwyREFBaUIsSUFBSUEsaUVBQXVCLEVBQUc7UUFBQW9CLFFBQUEsRUFFNURWLENBQUMsQ0FBQyxpQ0FBaUM7TUFBQyxDQUMvQixDQUNULEVBQ0FvZ0IsZUFBZSxpQkFDZDVnQixzREFBQSxDQUFDaUcsaURBQU07UUFBQzlFLFNBQVMsRUFBRSxHQUFHckIsMkRBQWlCLElBQUlBLCtEQUFxQixFQUFHO1FBQUFvQixRQUFBLEVBQ2hFVixDQUFDLENBQUMsK0JBQStCO01BQUMsQ0FDN0IsQ0FDVDtJQUFBLENBQ0QsQ0FBQyxnQkFFSFIsc0RBQUEsQ0FBQ2lHLGlEQUFNO01BQUM5RSxTQUFTLEVBQUUsR0FBR3JCLDJEQUFpQixJQUFJQSxnRUFBc0IsRUFBRztNQUFBb0IsUUFBQSxFQUNqRVYsQ0FBQyxDQUFDLGdDQUFnQztJQUFDLENBQzlCO0VBQ1QsQ0FDUSxDQUFDO0FBRWhCO0FBRUE2TCxZQUFZLENBQUNySyxTQUFTLEdBQUc7RUFDdkI5RCxNQUFNLEVBQUVtQix1REFBZSxDQUFDO0lBQ3RCbU8sS0FBSyxFQUFFbk8sdURBQWUsQ0FBQztNQUNyQm1MLE1BQU0sRUFBRW5MLDBEQUFnQnFMO0lBQzFCLENBQUMsQ0FBQztJQUNGOFYsZUFBZSxFQUFFbmhCLHlEQUFpQixDQUFDOUMsTUFBTTtFQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVELGlFQUFlOFAsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakVwQixNQUFNK1UsZUFBZSxHQUFHLFVBQVU7QUFDbEMsTUFBTUMsaUJBQWlCLEdBQUcsWUFBWTtBQUN0QyxNQUFNQyxnQkFBZ0IsR0FBRyxXQUFXO0FBQ3BDLE1BQU1DLGlCQUFpQixHQUFHLFlBQVk7QUFFdEMsTUFBTTdVLGdCQUFnQixHQUFJeE8sTUFBTSxJQUFLO0VBQzFDLE1BQU1zakIsU0FBUyxHQUFHQSxDQUFBLEtBQU07SUFDdEIsSUFBSSxDQUFDdGpCLE1BQU0sQ0FBQ3dQLFNBQVMsRUFBRSxPQUFPNFQsZ0JBQWdCO0lBQzlDLElBQUlwakIsTUFBTSxDQUFDeWdCLFFBQVEsS0FBSyxDQUFDLEVBQUUsT0FBTzRDLGlCQUFpQjtJQUNuRCxJQUFJLENBQUNyakIsTUFBTSxDQUFDc1AsS0FBSyxFQUFFd08sVUFBVSxJQUFJLENBQUM5ZCxNQUFNLENBQUNzUCxLQUFLLEVBQUV5TyxTQUFTLEVBQ3ZELE9BQU9vRixpQkFBaUI7SUFDMUIsT0FBT25qQixNQUFNLENBQUNzUCxLQUFLLENBQUNoRCxNQUFNO0VBQzVCLENBQUM7RUFFRCxJQUFJLENBQUN0TSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFFdEIsTUFBTXNNLE1BQU0sR0FBR2dYLFNBQVMsQ0FBQyxDQUFDO0VBQzFCLE1BQU1qQixRQUFRLEdBQUdyaUIsTUFBTSxDQUFDd1AsU0FBUyxJQUFJbEQsTUFBTSxLQUFLOFcsZ0JBQWdCO0VBQ2hFLE1BQU1HLFlBQVksR0FDaEJ2akIsTUFBTSxDQUFDd2pCLFlBQVksR0FBRyxDQUFDLElBQUl4akIsTUFBTSxDQUFDd2pCLFlBQVksR0FBR3hqQixNQUFNLENBQUN5akIsZUFBZTtFQUN6RSxNQUFNQyxjQUFjLEdBQ2xCLENBQUMxakIsTUFBTSxDQUFDK0wsV0FBVyxDQUFDZ1Qsa0JBQWtCLElBQ3BDL2UsTUFBTSxDQUFDMmpCLFVBQVUsRUFBRTVFLGtCQUFrQixLQUN2Q3pTLE1BQU0sS0FBSytXLGlCQUFpQixJQUM1QixDQUFDcmpCLE1BQU0sQ0FBQ3NQLEtBQUssRUFBRW9PLE9BQU8sRUFBRWpmLEVBQUUsSUFDMUIsQ0FBQ3VCLE1BQU0sQ0FBQ3NQLEtBQUssRUFBRXNVLFVBQVU7RUFDM0IsTUFBTS9DLFVBQVUsR0FBR3ZVLE1BQU0sS0FBSzRXLGVBQWU7RUFDN0MsTUFBTXZVLFlBQVksR0FBR3JDLE1BQU0sS0FBSytXLGlCQUFpQjtFQUNqRCxNQUFNM1UsWUFBWSxHQUFHcEMsTUFBTSxLQUFLNlcsaUJBQWlCO0VBRWpELE9BQU87SUFDTDdXLE1BQU07SUFDTnVVLFVBQVU7SUFDVmxTLFlBQVk7SUFDWkQsWUFBWTtJQUNaMlQsUUFBUTtJQUNSa0IsWUFBWTtJQUNaRztFQUNGLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2Q0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQytFO0FBUzVEO0FBQzRCO0FBRS9DLE1BQU1JLGFBQWEsR0FBRztFQUNwQm5tQixNQUFNLEVBQUUsSUFBSTtFQUNacUIsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUNSK2tCLGFBQWEsRUFBRSxLQUFLO0VBQ3BCcmEsWUFBWSxFQUFFLEVBQUU7RUFDaEJsTyxjQUFjLEVBQUUsRUFBRTtFQUNsQmdaLE1BQU0sRUFBRSxDQUFDLENBQUM7RUFDVndQLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLGNBQWMsRUFBRSxLQUFLO0VBQ3JCdGEsbUJBQW1CLEVBQUUsQ0FBQztFQUN0QnVhLGdCQUFnQixFQUFFLENBQUM7RUFDbkJ0YSxlQUFlLEVBQUUsQ0FBQztFQUNsQkMsWUFBWSxFQUFFLENBQUM7RUFDZnNhLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGdCQUFnQixFQUFFLENBQUM7RUFDbkJDLGVBQWUsRUFBRSxDQUFDO0VBQ2xCQyxZQUFZLEVBQUU7QUFDaEIsQ0FBQztBQUVELE1BQU1DLGFBQWEsR0FBRyxTQUFBQSxDQUFBLEVBQW1EO0VBQUEsSUFBbER6YSxLQUFLLEdBQUE4VCxTQUFBLENBQUFyZixNQUFBLFFBQUFxZixTQUFBLFFBQUE1SSxTQUFBLEdBQUE0SSxTQUFBLE1BQUdrRyxhQUFhO0VBQUEsSUFBRTtJQUFFcm5CLElBQUk7SUFBRWtDO0VBQVEsQ0FBQyxHQUFBaWYsU0FBQSxDQUFBcmYsTUFBQSxRQUFBcWYsU0FBQSxRQUFBNUksU0FBQSxHQUFBNEksU0FBQSxNQUFHLENBQUMsQ0FBQztFQUNsRSxRQUFRbmhCLElBQUk7SUFDVixLQUFLb25CLHlGQUFXO0lBQ2hCLEtBQUszcEIsaURBQVc7TUFDZCxPQUFPNHBCLGFBQWE7SUFDdEIsS0FBSzNwQixrREFBWTtNQUNmLE9BQU87UUFDTCxHQUFHMlAsS0FBSztRQUNSSCxtQkFBbUIsRUFBRSxDQUFDO1FBQ3RCdWEsZ0JBQWdCLEVBQUU7TUFDcEIsQ0FBQztJQUNILEtBQUtyb0IsZ0RBQVU7TUFDYixPQUFPO1FBQUUsR0FBR2lPLEtBQUs7UUFBRW5NLE1BQU0sRUFBRWdCO01BQVEsQ0FBQztJQUN0QyxLQUFLL0MsOENBQVE7TUFDWCxPQUFPO1FBQUUsR0FBR2tPLEtBQUs7UUFBRTlLLElBQUksRUFBRUw7TUFBUSxDQUFDO0lBQ3BDLEtBQUt2RSxxREFBZTtNQUFFO1FBQ3BCLE1BQU07VUFBRXNQO1FBQWEsQ0FBQyxHQUFHSSxLQUFLO1FBQzlCLE1BQU07VUFBRVUsSUFBSTtVQUFFa0QsS0FBSztVQUFFbE47UUFBYSxDQUFDLEdBQUc3QixPQUFPLENBQUM0TCxRQUFRO1FBQ3RELE9BQU87VUFDTCxHQUFHVCxLQUFLO1VBQ1JKLFlBQVksRUFDVmxKLFlBQVksS0FBS3pHLHdEQUFVLEdBQUd5USxJQUFJLEdBQUcsQ0FBQyxHQUFHZCxZQUFZLEVBQUUsR0FBR2MsSUFBSSxDQUFDO1VBQ2pFWCxZQUFZLEVBQUU2RCxLQUFLO1VBQ25CL0QsbUJBQW1CLEVBQUVuSjtRQUN2QixDQUFDO01BQ0g7SUFDQSxLQUFLM0YsMERBQW9CO01BQUU7UUFDekIsTUFBTTtVQUFFNk87UUFBYSxDQUFDLEdBQUdJLEtBQUs7UUFDOUIsTUFBTTtVQUFFVSxJQUFJO1VBQUVrRCxLQUFLO1VBQUVsTixZQUFZO1VBQUU4UjtRQUFVLENBQUMsR0FBRzNULE9BQU8sQ0FBQzRMLFFBQVE7UUFDakUsTUFBTWlhLFdBQVcsR0FBRzlhLFlBQVksQ0FBQ21KLElBQUksQ0FBRTRSLENBQUMsSUFBS0EsQ0FBQyxDQUFDaG1CLEVBQUUsS0FBSytMLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRXRNLEtBQUssQ0FBQ08sRUFBRSxDQUFDO1FBRXhFLE1BQU1pbUIsWUFBWSxHQUFHO1VBQ25CLEdBQUdGLFdBQVc7VUFDZDVSLGFBQWEsRUFDWHBTLFlBQVksS0FBS3pHLHdEQUFVLEdBQ3ZCeVEsSUFBSSxHQUNKLENBQUMsR0FBR2dhLFdBQVcsQ0FBQzVSLGFBQWEsRUFBRSxHQUFHcEksSUFBSSxDQUFDO1VBQzdDeUksb0JBQW9CLEVBQUV6UyxZQUFZO1VBQ2xDbWtCLGlCQUFpQixFQUFFclMsU0FBUztVQUM1QnFCLGFBQWEsRUFBRWpHO1FBQ2pCLENBQUM7UUFDRCxPQUFPO1VBQ0wsR0FBRzVELEtBQUs7VUFDUkosWUFBWSxFQUFFQSxZQUFZLENBQUNxQixHQUFHLENBQUU2WixFQUFFLElBQ2hDQSxFQUFFLENBQUNubUIsRUFBRSxLQUFLaW1CLFlBQVksQ0FBQ2ptQixFQUFFLEdBQUdpbUIsWUFBWSxHQUFHRSxFQUM3QztRQUNGLENBQUM7TUFDSDtJQUNBLEtBQUszcEIsNkRBQXVCO01BQUU7UUFDNUIsTUFBTTtVQUFFdVAsSUFBSTtVQUFFa0QsS0FBSztVQUFFbE47UUFBYSxDQUFDLEdBQUc3QixPQUFPLENBQUM0TCxRQUFRO1FBQ3RELE9BQU87VUFBQyxHQUFHVCxLQUFLO1VBQUV0TyxjQUFjLEVBQUVnUDtRQUFJLENBQUM7TUFDekM7SUFDQTtNQUNFLE9BQU9WLEtBQUs7RUFDaEI7QUFDRixDQUFDO0FBRUQsaUVBQWV5YSxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHSTtBQUNrQjtBQVUzQjtBQUN5QjtBQUNSO0FBQ0Y7QUFFL0IsTUFBTWtCLFFBQVEsR0FBR3ZvQixJQUFBLElBQWdEO0VBQUEsSUFBL0M7SUFBRXdvQixRQUFRO0lBQUVDLFFBQVE7SUFBRWhvQixNQUFNO0lBQUVGO0VBQVcsQ0FBQyxHQUFBUCxJQUFBO0VBQ2pFO0VBQ0EsTUFBTTBvQixRQUFRLEdBQUdKLHNEQUFlLENBQUM7SUFDL0I5bkIsV0FBVyxFQUFFNm1CLGdEQUFhQTtFQUM1QixDQUFDLENBQUM7RUFFRixNQUFNc0IsS0FBSyxHQUFHZixnRUFBYyxDQUFDO0lBQzNCZ0IsT0FBTyxFQUFFZCw2REFBYyxDQUNyQjtNQUNFdGQsR0FBRyxFQUFFLDBCQUEwQmdlLFFBQVEsRUFBRTtNQUN6Q0gsT0FBT0Esb0VBQUFBO0lBQ1QsQ0FBQyxFQUNESyxRQUNGLENBQUM7SUFDREcsVUFBVSxFQUFHQyxvQkFBb0IsSUFDL0JBLG9CQUFvQixDQUFDO01BQ25CQyxLQUFLLEVBQUU7UUFDTEMsYUFBYSxFQUFFO1VBQ2JSLFFBQVE7VUFDUmpvQixVQUFVO1VBQ1ZFLE1BQU07VUFDTmdvQjtRQUNGO01BQ0YsQ0FBQztNQUNEUSxjQUFjLEVBQUUsS0FBSztNQUNyQkMsaUJBQWlCLEVBQUU7UUFDakJDLGNBQWMsRUFBRSxDQUFDcEIsZ0RBQUssRUFBRUMsb0RBQVMsRUFBRUMsZ0RBQUssRUFBRUMsa0RBQU8sRUFBRUMsZ0RBQUssRUFBRUMsbURBQVE7TUFDcEU7SUFDRixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0VBRUYsT0FBT08sS0FBSztBQUNkLENBQUM7QUFFTSxNQUFNUyxZQUFZLEdBQUlDLE1BQU0sSUFBSztFQUN0QyxNQUFNVixLQUFLLEdBQUdoQiw4Q0FBTyxDQUFDLE1BQU1ZLFFBQVEsQ0FBQ2MsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBQ2pELE1BQU1DLFNBQVMsR0FBRzNCLDhDQUFPLENBQUMsTUFBTUUsMkRBQVksQ0FBQ2MsS0FBSyxDQUFDLEVBQUUsQ0FBQ0EsS0FBSyxDQUFDLENBQUM7RUFFN0QsT0FBTztJQUNMQSxLQUFLO0lBQ0xXO0VBQ0YsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZEeUQ7QUFDbEI7QUFFakMsTUFBTTFzQixvQkFBb0IsR0FBRyxNQUFBQSxDQUFBLEtBQVk7RUFDOUMsSUFBSTtJQUNGLE9BQU8sTUFBTTRzQixnR0FBYyxDQUFDLENBQUM7RUFDL0IsQ0FBQyxDQUFDLE9BQU85bkIsQ0FBQyxFQUFFO0lBQ1ZtVSxPQUFPLENBQUNDLEdBQUcsQ0FBQyx3REFBd0QsRUFBRXBVLENBQUMsQ0FBQztJQUN4RStuQiwyREFBdUIsQ0FBQy9uQixDQUFDLENBQUM7SUFDMUI2bkIsNEZBQVUsQ0FBQyxDQUFDO0lBQ1osT0FBTzNvQixPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0VBQ3pCO0FBQ0YsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZk0sTUFBTThvQixvQkFBb0IsR0FBRyxFQUFFO0FBQy9CLE1BQU1DLG1CQUFtQixHQUFHLEVBQUU7QUFDOUIsTUFBTTdzQixhQUFhLEdBQUcsQ0FBQztBQUN2QixNQUFNOHNCLGVBQWUsR0FBRyxJQUFJO0FBQzVCLE1BQU1DLE9BQU8sR0FBRyxDQUFDO0FBQ2pCLE1BQU1odEIsc0JBQXNCLEdBQUcsQ0FBQztBQUNoQyxNQUFNRCxVQUFVLEdBQUcsQ0FBQztBQUNwQixNQUFNeVQsd0JBQXdCLEdBQUcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1BKO0FBQ0s7QUFNckI7QUFFZCxNQUFNckMsY0FBYyxHQUFHQSxDQUFDck8sS0FBSyxFQUFBSSxJQUFBLEtBQXVDO0VBQUEsSUFBckM7SUFBRWdxQixNQUFNLEdBQUcsT0FBTztJQUFFLEdBQUc1UztFQUFRLENBQUMsR0FBQXBYLElBQUE7RUFDcEUsTUFBTWlxQixjQUFjLEdBQUc7SUFDckJqYixRQUFRLEVBQUUsS0FBSztJQUNma2IscUJBQXFCLEVBQUUsQ0FBQztJQUN4QkMscUJBQXFCLEVBQUU7RUFDekIsQ0FBQztFQUVELE1BQU1DLFNBQVMsR0FBRyxJQUFJQyxJQUFJLENBQUNDLFlBQVksQ0FBQ04sTUFBTSxFQUFFO0lBQzlDN1csS0FBSyxFQUFFLFVBQVU7SUFDakIsR0FBRzhXLGNBQWM7SUFDakIsR0FBRzdTO0VBQ0wsQ0FBQyxDQUFDO0VBRUYsT0FBT2dULFNBQVMsQ0FBQ0csTUFBTSxDQUFDM3FCLEtBQUssQ0FBQztBQUNoQyxDQUFDO0FBRU0sTUFBTXVWLGdCQUFnQixHQUFHQSxDQUFDcVYsUUFBUSxFQUFFQyxRQUFRLEtBQUs7RUFDdEQsSUFBSUEsUUFBUSxFQUNWLE9BQU9WLHlEQUNGLENBQUNTLFFBQVEsR0FBR1gsdURBQWUsRUFBRVksUUFBUSxDQUFDLENBQ3hDRixNQUFNLENBQUMsZUFBZSxDQUFDO0VBRTVCLE9BQU9SLDJEQUFXLENBQUNTLFFBQVEsQ0FBQyxDQUFDRCxNQUFNLENBQUMsZUFBZSxDQUFDO0FBQ3RELENBQUM7QUFFTSxNQUFNamUsc0JBQXNCLEdBQUk3TCxNQUFNLElBQUs7RUFDaEQsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBRXhCLE1BQU1tcUIsUUFBUSxHQUFHYixzREFBTSxDQUFDdHBCLE1BQU0sQ0FBQ29xQixVQUFVLEdBQUdoQix1REFBZSxDQUFDLENBQUNhLEVBQUUsQ0FDN0RqcUIsTUFBTSxDQUFDcXFCLFlBQ1QsQ0FBQztFQUNELE1BQU1DLE1BQU0sR0FBR2hCLHNEQUFNLENBQUN0cEIsTUFBTSxDQUFDdXFCLFFBQVEsR0FBR25CLHVEQUFlLENBQUMsQ0FBQ2EsRUFBRSxDQUN6RGpxQixNQUFNLENBQUNxcUIsWUFDVCxDQUFDO0VBQ0QsTUFBTUcsSUFBSSxHQUFHRixNQUFNLENBQUNHLElBQUksQ0FBQ04sUUFBUSxFQUFFLE1BQU0sQ0FBQztFQUMxQyxJQUFJTyxlQUFlLEdBQUcsZUFBZTtFQUNyQyxJQUFJQyxhQUFhLEdBQUcsZUFBZTtFQUNuQyxJQUFJUixRQUFRLENBQUNTLElBQUksQ0FBQyxDQUFDLEtBQUtOLE1BQU0sQ0FBQ00sSUFBSSxDQUFDLENBQUMsRUFBRUYsZUFBZSxHQUFHLFNBQVM7RUFDbEUsSUFBSVAsUUFBUSxDQUFDVSxLQUFLLENBQUMsQ0FBQyxLQUFLUCxNQUFNLENBQUNPLEtBQUssQ0FBQyxDQUFDLEVBQUVGLGFBQWEsR0FBRyxVQUFVO0VBRW5FLE1BQU1HLFNBQVMsR0FBR1gsUUFBUSxDQUFDTCxNQUFNLENBQUNZLGVBQWUsQ0FBQztFQUNsRCxNQUFNSyxPQUFPLEdBQUdULE1BQU0sQ0FBQ1IsTUFBTSxDQUFDYSxhQUFhLENBQUM7RUFFNUMsSUFBSUgsSUFBSSxHQUFHbkIsK0NBQU8sRUFBRSxPQUFPLEdBQUd5QixTQUFTLE1BQU1DLE9BQU8sRUFBRTtFQUV0RCxPQUFPRCxTQUFTO0FBQ2xCLENBQUM7QUFFTSxNQUFNdmQsb0JBQW9CLEdBQUcxTixLQUFBLElBQWdDO0VBQUEsSUFBL0I7SUFBRVUsS0FBSztJQUFFUCxNQUFNO0lBQUUwTjtFQUFRLENBQUMsR0FBQTdOLEtBQUE7RUFDN0QsSUFBSSxDQUFDVSxLQUFLLElBQUksQ0FBQ1AsTUFBTSxJQUFJLENBQUMwTixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFFNUMsTUFBTTtJQUFFb1ksZUFBZTtJQUFFclgsZUFBZTtJQUFFQyxZQUFZO0lBQUVzYztFQUFPLENBQUMsR0FBR3pxQixLQUFLO0VBQ3hFLE1BQU07SUFBRTBxQjtFQUFhLENBQUMsR0FBR2pyQixNQUFNO0VBRS9CLE1BQU0rTixhQUFhLEdBQUcsRUFBRTtFQUN4QixJQUFJbWQsbUJBQW1CLEdBQUcsQ0FBQztFQUUzQixNQUFNQyxjQUFjLEdBQUc7SUFBRTVjLFFBQVEsRUFBRWhPLEtBQUssQ0FBQ2dPO0VBQVMsQ0FBQztFQUVuRDdOLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixLQUFLLENBQUM2cUIsOEJBQThCLENBQUMsQ0FBQ2hlLEdBQUcsQ0FBRS9LLE1BQU0sSUFBSztJQUNoRSxNQUFNZ3BCLFVBQVUsR0FBR0osWUFBWSxDQUFDL1YsSUFBSSxDQUFFb1csRUFBRSxJQUFLQSxFQUFFLENBQUN0c0IsSUFBSSxLQUFLcUQsTUFBTSxDQUFDO0lBQ2hFMEwsYUFBYSxDQUFDaFAsSUFBSSxDQUFDO01BQ2pCd3NCLGNBQWMsRUFBRUYsVUFBVSxDQUFDdnFCLEVBQUU7TUFDN0JzTixXQUFXLEVBQUVpZCxVQUFVO01BQ3ZCcnNCLElBQUksRUFBRXFELE1BQU07TUFDWjhMLEdBQUcsRUFBRTVOLEtBQUssQ0FBQzZxQiw4QkFBOEIsQ0FBQy9vQixNQUFNO0lBQ2xELENBQUMsQ0FBQztJQUNGNm9CLG1CQUFtQixJQUNqQkcsVUFBVSxDQUFDaGQsSUFBSSxHQUFHOU4sS0FBSyxDQUFDNnFCLDhCQUE4QixDQUFDL29CLE1BQU0sQ0FBQztJQUVoRSxPQUFPMEwsYUFBYTtFQUN0QixDQUFDLENBQUM7RUFFRixNQUFNeWQsYUFBYSxHQUFHaGUsY0FBYyxDQUFDMGQsbUJBQW1CLEVBQUVDLGNBQWMsQ0FBQztFQUV6RSxNQUFNeGQsYUFBYSxHQUFHSCxjQUFjLENBQUNpQixlQUFlLEVBQUUwYyxjQUFjLENBQUM7RUFDckUsTUFBTXZkLFdBQVcsR0FBR0osY0FBYyxDQUFDc1ksZUFBZSxFQUFFcUYsY0FBYyxDQUFDO0VBQ25FLE1BQU10ZCxVQUFVLEdBQUdMLGNBQWMsQ0FBQ2tCLFlBQVksRUFBRXljLGNBQWMsQ0FBQztFQUMvRCxNQUFNcmQsV0FBVyxHQUFHcE4sTUFBTSxDQUFDK3FCLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNwckIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUNyRWlOLGNBQWMsQ0FBQ3dkLE1BQU0sRUFBRUcsY0FBYyxDQUFDLEdBQ3RDM2QsY0FBYyxDQUFDZ2UsYUFBYSxFQUFFTCxjQUFjLENBQUM7RUFFakQsT0FBTztJQUNMeGQsYUFBYTtJQUNiQyxXQUFXO0lBQ1hDLFVBQVU7SUFDVkMsV0FBVztJQUNYQztFQUNGLENBQUM7QUFDSCxDQUFDO0FBRU0sTUFBTTBHLGVBQWUsR0FBR0EsQ0FBQzFJLFlBQVksRUFBRTVLLE9BQU8sS0FBSztFQUN4RCxNQUFNeXFCLE1BQU0sR0FBRzdmLFlBQVksQ0FBQ2xOLE1BQU0sQ0FBRWlvQixDQUFDLElBQUtBLENBQUMsQ0FBQ2htQixFQUFFLEtBQUtLLE9BQU8sQ0FBQztFQUMzRCxPQUFPeXFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTNXLGFBQWE7QUFDakMsQ0FBQztBQUVNLE1BQU1qUiwyQkFBMkIsR0FBSTZuQixFQUFFLElBQUs7RUFDakQsTUFBTTVzQixLQUFLLEdBQUc0c0IsRUFBRSxDQUFDQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcxQyx1REFBZTtFQUN2RCxNQUFNbHFCLEtBQUssR0FDVDJzQixFQUFFLENBQUNDLFFBQVEsQ0FBQzVDLDREQUFvQixFQUFFQywyREFBbUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQzVEQyx1REFBZTtFQUNqQixPQUFPO0lBQ0xucUIsS0FBSztJQUNMQztFQUNGLENBQUM7QUFDSCxDQUFDO0FBRU0sTUFBTXdSLHFCQUFxQixHQUFJMVEsTUFBTSxJQUFLO0VBQy9DLElBQUksQ0FBQ0EsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUN4QixPQUFPQSxNQUFNLENBQUMrckIseUJBQXlCLElBQ3JDL3JCLE1BQU0sQ0FBQytyQix5QkFBeUIsR0FBRy9yQixNQUFNLENBQUN1cUIsUUFBUSxHQUNoRHZxQixNQUFNLENBQUMrckIseUJBQXlCLEdBQ2hDL3JCLE1BQU0sQ0FBQ3VxQixRQUFRO0FBQ3JCLENBQUM7QUFFTSxNQUFNeUIsa0JBQWtCLEdBQUdBLENBQUEsS0FDaENDLElBQUksQ0FBQ0MsS0FBSyxDQUFDLENBQUMsSUFBSWhuQixJQUFJLENBQUMsQ0FBQyxHQUFHa2tCLHVEQUFlLENBQUM7QUFFcEMsTUFBTStDLE1BQU0sR0FBR0EsQ0FBQSxLQUFNLENBQUM1dEIsUUFBUSxFQUFFcUIsUUFBUSxLQUFLO0VBQ2xELE1BQU07SUFBRXdzQjtFQUFXLENBQUMsR0FBR3hzQixRQUFRLENBQUMsQ0FBQztFQUNqQyxPQUFPd3NCLFVBQVUsRUFBRUMsTUFBTSxJQUFJLElBQUksR0FBR0wsa0JBQWtCLENBQUMsQ0FBQyxHQUFHSSxVQUFVLEVBQUVDLE1BQU07QUFDL0UsQ0FBQztBQUVNLE1BQU0xYixNQUFNLEdBQUdBLENBQUEsS0FBTTtFQUMxQixNQUFNcFMsUUFBUSxHQUFHaU4sd0RBQVcsQ0FBQyxDQUFDO0VBRTlCLE9BQU9qTixRQUFRLENBQUM0dEIsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hJRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3FmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEJyZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDd1A7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1R4UDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQytqQjs7Ozs7Ozs7Ozs7Ozs7O0FDdkIvakI7QUFDQTtBQUMwQjs7Ozs7Ozs7Ozs7Ozs7OztBQ0YxQjtBQUNBO0FBQ0E7QUFDNEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyQnRhO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ007Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhNO0FBQ0E7QUFDQTtBQUNBO0FBQytFOzs7Ozs7Ozs7OztBQ0ovRTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ047QUFDSTtBQUN1QjtBQUNmO0FBQ1g7QUFDRztBQUNvQjtBQUNDO0FBQUE7QUFFNUQsTUFBTUssdUJBQXVCLEdBQUlwWixLQUFLLElBQUs7RUFDekMsTUFBTTtJQUFFNFUsUUFBUTtJQUFFeUUsWUFBWTtJQUFFenNCLE1BQU07SUFBRUYsVUFBVTtJQUFFdUIsSUFBSTtJQUFFMG1CO0VBQVMsQ0FBQyxHQUFHM1UsS0FBSztFQUM1RSxNQUFNO0lBQUV6TztFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUU5QixNQUFNO0lBQUV3a0IsS0FBSztJQUFFVztFQUFVLENBQUMsR0FBR0Ysb0RBQVksQ0FBQztJQUN4Q1gsUUFBUTtJQUNSeUUsWUFBWTtJQUNaenNCLE1BQU07SUFDTnFCLElBQUk7SUFDSnZCLFVBQVU7SUFDVmlvQjtFQUNGLENBQUMsQ0FBQztFQUVGLE1BQU0yRSxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU1yc0IsTUFBTSxHQUFHLElBQUlzc0IsZUFBZSxDQUFDQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDO0lBQzFELE1BQU1DLEtBQUssR0FBRzFzQixNQUFNLENBQUMyc0IsR0FBRyxDQUFDLFlBQVksQ0FBQztJQUN0QyxJQUFJRCxLQUFLLEVBQUU3RSxLQUFLLENBQUMzcEIsUUFBUSxDQUFDO01BQUVPLElBQUksRUFBRXZDLGlEQUFXO01BQUV5RSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVEc0YsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Q0aEIsS0FBSyxDQUFDM3BCLFFBQVEsQ0FBQzBFLG1EQUFTLENBQUNqRCxNQUFNLENBQUMsQ0FBQztFQUNuQyxDQUFDLEVBQUUsQ0FBQ0EsTUFBTSxDQUFDLENBQUM7RUFFWnNHLGdEQUFTLENBQUMsTUFBTTtJQUNkNGhCLEtBQUssQ0FBQzNwQixRQUFRLENBQUM2QyxpREFBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUMvQixDQUFDLEVBQUUsQ0FBQ0EsSUFBSSxDQUFDLENBQUM7RUFFVixvQkFDRThDLHNEQUFBLENBQUNtb0IsaURBQVE7SUFBQ3BFLEtBQUssRUFBRUEsS0FBTTtJQUFBN2lCLFFBQUEsZUFDckJoQix1REFBQSxDQUFDa29CLHdFQUFXO01BQ1ZVLFlBQVksRUFBRVAsZ0JBQWlCO01BQy9CckcsT0FBTyxFQUFFLElBQUs7TUFDZHdDLFNBQVMsRUFBRUEsU0FBVTtNQUFBeGpCLFFBQUEsZ0JBRXJCbEIsc0RBQUEsQ0FBQ3FDLDhDQUFHO1FBQUNmLEVBQUUsRUFBRTtVQUFFMEQsT0FBTyxFQUFFO1lBQUVrQyxFQUFFLEVBQUUsQ0FBQztZQUFFMEIsRUFBRSxFQUFFLENBQUM7WUFBRUMsRUFBRSxFQUFFO1VBQUU7UUFBRSxDQUFFO1FBQUEzSCxRQUFBLGVBQzVDbEIsc0RBQUE7VUFBQWtCLFFBQUEsRUFBS1YsQ0FBQyxDQUFDLGNBQWM7UUFBQyxDQUFLO01BQUMsQ0FDekIsQ0FBQyxlQUNOUixzREFBQSxDQUFDMkgsbUVBQWU7UUFDZGtjLFFBQVEsRUFBRUEsUUFBUztRQUNuQnlFLFlBQVksRUFBRUEsWUFBYTtRQUMzQnpzQixNQUFNLEVBQUVBLE1BQU87UUFDZkYsVUFBVSxFQUFFQTtNQUFXLENBQ3hCLENBQUM7SUFBQSxDQUNTO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEMHNCLHVCQUF1QixDQUFDcm1CLFNBQVMsR0FBRztFQUNsQzZoQixRQUFRLEVBQUV4a0IsMERBQWdCO0VBQzFCaXBCLFlBQVksRUFBRWpwQiwwREFBZ0I7RUFDOUJ4RCxNQUFNLEVBQUV3RCwwREFBZ0I7RUFDeEIxRCxVQUFVLEVBQUUwRCwwREFBZ0I7RUFDNUJuQyxJQUFJLEVBQUVtQywwREFBZ0J1TDtBQUN4QixDQUFDO0FBRUQsaUVBQWV5ZCx1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9EYXRlcGlja2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTnVtYmVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZWxlZ2F0aW9uRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBGSVJTVF9QQUdFLFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBPTkVfUEFHRV9ORVhUXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFMgPSBcIkdFVF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSL1NPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX1bXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfT1AJHtmaWx0ZXJPYmoudmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT5cbiAgZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIjtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge30sXG4gICAgbmV4dCA9IGZhbHNlXG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZTogbmV4dCA/IHBhZ2UgKyBPTkVfUEFHRV9ORVhUIDogcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUHJvZmlsZSA9XG4gIChwcm9maWxlKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgaWRwQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUpKCkpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9JRFBfUFJPRklMRSksXG4gICAgICAvLyBUT0RPOiBuZWVkIElEUF9CQVNFX1VSTFxuICAgICAgYCR7aWRwQmFzZVVybH0vYXBpL3YxL3VzZXJzL21lYCxcbiAgICAgIHByb2ZpbGUsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHBheWxvYWQpXG4gICAgICAuY2F0Y2goKCkgPT4gZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSkoKSkpO1xuICB9O1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoeyBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB1c2VyU3RhdGU6IHsgdXNlclByb2ZpbGUgfSxcbiAgICAgIHN1bW1pdFxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgaWYgKCF1c2VyUHJvZmlsZS5pZCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBmaWx0ZXI6IFwic3RhdHVzPT1QYWlkXCIsXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCB0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3JkZXIuaWQsb3JkZXIub3duZXJfZmlyc3RfbmFtZSxvcmRlci5vd25lcl9sYXN0X25hbWUsb3JkZXIub3duZXJfZW1haWwsb3duZXIuZmlyc3RfbmFtZSxvd25lci5sYXN0X25hbWUsb3duZXIuc3RhdHVzXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7IG9yZGVySWQsIHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCB7XG4gICAgICBvcmRlclN0YXRlOiB7IGN1cnJlbnRfcGFnZTogb3JkZXJQYWdlIH0sXG4gICAgICB0aWNrZXRTdGF0ZTogeyBjdXJyZW50X3BhZ2U6IHRpY2tldFBhZ2UgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcblxuICAgICAgICBpZiAodGlja2V0Lm9yZGVyX2lkKSB7XG4gICAgICAgICAgZGlzcGF0Y2goZ2V0VXNlck9yZGVycyh7IHBhZ2U6IG9yZGVyUGFnZSB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlzcGF0Y2goZ2V0VXNlclRpY2tldHMoeyBwYWdlOiB0aWNrZXRQYWdlIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9KTtcbiAgfTtcblxuLy8gU1VNTUlUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRTdW1taXQgPSAoc3VtbWl0KSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1VNTUlUKShzdW1taXQpKTtcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZToge1xuICAgICAgICBzdW1taXQsXG4gICAgICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICAgICAgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogMjAsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke3VzZXJQcm9maWxlLmF0dGVuZGVlX2lkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEYXlqcyB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfREFURSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEYXRlUGlja2VyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IFtkYXRlVmFsdWUsIHNldERhdGVWYWx1ZV0gPSB1c2VTdGF0ZShub3cpO1xuICBjb25zdCBvbkRhdGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgc2V0RGF0ZVZhbHVlKHZhbCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbC4kZCk7XG4gICAgY29uc3QgeyBsb3dlciwgdXBwZXIgfSA9IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyhkYXRlKTtcbiAgICBvbkZpbHRlcih7XG4gICAgICB0eXBlOiBGSUxURVJfVkFSX0RBVEUsXG4gICAgICBuYW1lOiBcImNyZWF0ZWRcIixcbiAgICAgIGRhdGUsXG4gICAgICBsb3dlcixcbiAgICAgIHVwcGVyXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uUmVzZXRBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHNldERhdGVWYWx1ZShub3cpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckRhdGVMYWJlbH0+e3QoXCJmaWx0ZXIucHVyY2hhc2VkX29uXCIpfTwvZGl2PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZVBpY2tlckNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVwaWNrZXJDbG9zZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblJlc2V0QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8TG9jYWxpemF0aW9uUHJvdmlkZXIgZGF0ZUFkYXB0ZXI9e0FkYXB0ZXJEYXlqc30+XG4gICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbGVuZGFyRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTG9jYWxpemF0aW9uUHJvdmlkZXI+XG4gICAgICA8L1N0YWNrPlxuICAgIDwvPlxuICApO1xufVxuXG5CYXNpY0RhdGVQaWNrZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBCYXNpY0RhdGVQaWNrZXIgZnJvbSBcIi4vRGF0ZXBpY2tlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgey8qKiBjdXJyZW50bHkganVzdCBzaG93aW5nIFwiMVwiIGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG9ubHkgZmlsdGVyaW5nIG9uZSBjcml0ZXJpYSAtIGNyZWF0ZWQgZGF0ZSAqL31cbiAgICAgICAge2ZpbHRlck51bUFjdGl2ZSAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlck51bUFjdGl2ZX0+MTwvZGl2Pn1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0RhdGVQaWNrZXIgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8QmFzaWNEYXRlUGlja2VyXG4gICAgICAgICAgb25SZXNldD17KCkgPT4ge1xuICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKGZhbHNlKTtcbiAgICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25GaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIG9uRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufVxuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG5hbWU6IFwibnVtYmVyXCIsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gICAgb25SZXNldCgpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFNvcnQoeyBvblNvcnQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9PlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImRlc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJhc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyU29ydFNlYXJjaCh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICB4cz17Nn1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGdhcD17Mn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5GaWx0ZXJTb3J0U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJTb3J0U2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgRmlsdGVyU29ydFNlYXJjaCBmcm9tIFwiLi9GaWx0ZXJTb3J0U2VhcmNoXCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBNeU9yZGVyc1RpY2tldHMoKSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX3Blcl9wYWdlLFxuICAgIG9yZGVyc190b3RhbFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgW2hhc01vcmUsIHNldEhhc01vcmVdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtzZWFyY2hOZXh0LCBzZXRTZWFyY2hOZXh0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgW3NvcnQsIHNldFNvcnRdID0gdXNlU3RhdGUoe30pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTZWFyY2hOZXh0KGZhbHNlKTtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgcGFnZTogb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogb3JkZXJzX3Blcl9wYWdlLFxuICAgICAgICBuZXh0OiBzZWFyY2hOZXh0LFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgcmVzLnJlc3BvbnNlPy5kYXRhPy5sZW5ndGggPiBvcmRlcnNfcGVyX3BhZ2UgJiZcbiAgICAgICAgbWVtYmVyT3JkZXJzLmxlbmd0aCA9PT0gb3JkZXJzX3RvdGFsXG4gICAgICApXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH0sIFtmaWx0ZXIsIHNvcnQsIHNlYXJjaE5leHRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1c2VyICYmIHN1bW1pdCkge1xuICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMoKSk7XG4gICAgfVxuICB9LCBbdXNlciwgc3VtbWl0XSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgID5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT5cbiAgICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgICA8L2gyPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bWVtYmVyT3JkZXJzLmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzLmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBzZXRTZWFyY2hOZXh0KHRydWUpfVxuICAgICAgICAgIGhhc01vcmU9e2hhc01vcmV9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgICAgPE9yZGVyc0xpc3Qga2V5PXtvcmRlci5pZH0gb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJTdW1tYXJ5VGFibGUoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uRW1haWxTdXBwb3J0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbWFpbFN1cHBvcnRDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeSh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn0gc3g9e3sgcHQ6IDQsIHB4OiA0IH19PlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJMaXN0SXRlbSh7IHRpY2tldHMsIHRvdGFsLCBvblBhZ2luYXRlQ2xpY2ssIHN1bW1pdCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IHRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAodG90YWwgPiB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHMga2V5PXt0aWNrZXQuaWR9IHRpY2tldD17dGlja2V0fSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICkpfVxuICAgICAge3RpY2tldHM/Lmxlbmd0aCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufSBvbkNsaWNrPXtvblZpZXdNb3JlfT5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn0gb25DbGljaz17b25WaWV3TGVzc30+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4vT3JkZXJOdW1iZXJcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSwgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn0+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259IG9uQ2xpY2s9e29uT3BlbkNsaWNrfT5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7IHRpY2tldCwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgW29wZW5UaWNrZXQsIHNldE9wZW5UaWNrZXRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHsgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWQga2V5PXt0aWNrZXQuaWR9IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn0gY29udGFpbmVyPlxuICAgICAgPEdyaWQgeHM9ezd9IHBhZGRpbmc9ezJ9IGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX0+XG4gICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17NX0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDIsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgIHt0aWNrZXQub3duZXI/LmVtYWlsID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTpcbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfT57dGlja2V0Lm93bmVyPy5lbWFpbH08L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICB0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKVxuICAgICAgICApfVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlfVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXsoKSA9PiBzZXRPcGVuVGlja2V0KHRpY2tldCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgdGlja2V0PXtvcGVuVGlja2V0fVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRPcGVuVGlja2V0KG51bGwpfVxuICAgICAgLz5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuZnVuY3Rpb24gT3JkZXJOdW1iZXIoe1xuICBudW1iZXIsXG4gIGNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gZmFsc2UsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSB7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Tm9Db250YWluZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge251bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjb3B5ICYmIChcbiAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG51bWJlcil9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5PcmRlck51bWJlci5wcm9wVHlwZXMgPSB7XG4gIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTnVtYmVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUYWJQYW5lbChwcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIG9yZGVyLFxuICB0b3RhbCxcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5kZXRhaWxzUmVxdWlyZWRMYWJlbH0+XG4gICAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3I6IFwiI0ZGOTgwMFwiIH19IC8+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHRleHRDb2xvcj1cIiMwMDBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgICAgVGFiSW5kaWNhdG9yUHJvcHM9e3tcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwiIzAwMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSB0aWNrZXRzPXt0aWNrZXRzfSAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17Mn0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnkgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gdGlja2V0cz17dGlja2V0c30gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRPcmRlclRpY2tldHMsIGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4vT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuXG5mdW5jdGlvbiBPcmRlcnNMaXN0KHByb3BzKSB7XG4gIGNvbnN0IHsgc3VtbWl0LCBvcmRlciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHBlcl9wYWdlLCBsYXN0X3BhZ2UsIG1lbWJlck9yZGVycyB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcbiAgY29uc3QgZmV0Y2hUaWNrZXRzQnlPcmRlciA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIGN1cnJlbnRfcGFnZTogbGFzdF9wYWdlLFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZVxuICAgICAgfSlcbiAgICApLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoVGlja2V0c0J5T3JkZXIoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlLFxuICAgICAgICBuZXh0OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99PlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e29yZGVyLm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e2dldE9yZGVyVGlja2V0cyhtZW1iZXJPcmRlcnMsIG9yZGVyLmlkKX1cbiAgICAgICAgICB0b3RhbD17b3JkZXIudGlja2V0c190b3RhbH1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9e2RldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlPy5uYW1lIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9IGN1cnJlbnRBbnMubGVuZ3RoID09PSBxdWVzdGlvbk1heFZhbHVlcztcbiAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV3VmFsdWUgPSBtYXhTZWxlY3Rpb25SZWFjaGVkID8gY3VycmVudEFucyA6IFsuLi5jdXJyZW50QW5zLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRBbnMuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHNldEZpZWxkVmFsdWUocXVlc3Rpb25TbHVnLCBuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWw+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWU/LmluY2x1ZGVzKG9wLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZShldi50YXJnZXQuY2hlY2tlZCwgb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0KSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHRleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyh2KTtcbiAgICB9XG4gICAgcmV0dXJuIHYgPT09IGNvbXBhcmVWYWw7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvbnNcIixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25cIixcbiAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgYWxsb3dFZGl0ID0gdHJ1ZSxcbiAgZm9ybWlrXG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJ1bGUgPSAocnVsZSwgcXVlc3Rpb25TbHVnKSA9PlxuICAgIGNoZWNrVmlzaWJpbGl0eShcbiAgICAgIHJ1bGUsXG4gICAgICBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pXG4gICAgKTtcblxuICBjb25zdCByZW5kZXJRdWVzdGlvbiA9IChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSk7XG4gICAgLy8gZGlzYWJsZSBmaWVsZCBpZiBlZGl0IGlzbid0IGFsbG93ZWQgYW5kIHRoZSBxdWVzdGlvbnMgaXMgYW5zd2VyZWRcbiAgICBjb25zdCBpc0Rpc2FibGVkID1cbiAgICAgICghYWxsb3dFZGl0ICYmIGlzQW5zd2VyZWQoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddKSkgfHwgcmVhZE9ubHk7XG4gICAgY29uc3QgUXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQocS50eXBlKTtcblxuICAgIGNvbnN0IGZvcm1pa1Byb3BzID0ge1xuICAgICAgdmFsdWU6IGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIG9uQ2hhbmdlOiBmb3JtaWsuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25CbHVyOiBmb3JtaWsuaGFuZGxlQmx1cixcbiAgICAgIGVycm9yOlxuICAgICAgICBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIEJvb2xlYW4oZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddKSxcbiAgICAgIGhlbHBlclRleHQ6IGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddLFxuICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybWlrLnNldEZpZWxkVmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxRdWVzdGlvbkZpZWxkQ29tcG9uZW50XG4gICAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgICBxdWVzdGlvbj17cX1cbiAgICAgICAgcXVlc3Rpb25DbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgICAgICBpc0Rpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICB7Li4uZm9ybWlrUHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubWFwKChydWxlKSA9PiByZW5kZXJSdWxlKHJ1bGUsIHF1ZXN0aW9uU2x1ZykpfVxuICAgICAgPC9RdWVzdGlvbkZpZWxkQ29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntleHRyYVF1ZXN0aW9ucy5tYXAocmVuZGVyUXVlc3Rpb24pfTwvZGl2Pjtcbn1cblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBlbWFpbFwiKVxuICAgICAgLmVtYWlsKFwiRW1haWwgaW52YWxpZFwiKVxuICAgICAgLnJlcXVpcmVkKFwiRW1haWwgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGZpcnN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBjb21wYW55XCIpXG4gICAgICAucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gIH07XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gIH1cblxuICBpZiAoYWxsb3dzRGVsZWdhdGlvbikge1xuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGZpcnN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG5cbiAgICBzY2hlbWEuZGVsZWdhdGVkX2xhc3RfbmFtZSA9IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGxhc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiTGFzdCBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24ocS50eXBlLCBxLm5hbWUsIHEubWFuZGF0b3J5KTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKFwiVGhpcyBxdWVzdGlvbiBpcyByZXF1aXJlZFwiKVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuLy8gb24gZm9ybWlrIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicXVlc3Rpb25zIHdpdGggYSB2YWx1ZVxuLy8gb24gc3VibWl0LCB3ZSBvbmx5IG5lZWQgcmVsZXZhbnQgYW5zd2Vyc1xuY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGFsbG93c0RlbGVnYXRpb24sXG4gIG1hbmFnZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOiBvd25lci5lbWFpbCxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTogb3duZXIuZmlyc3RfbmFtZSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOiBvd25lci5sYXN0X25hbWUsXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOiBvd25lci5jb21wYW55LFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdOiBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkXG4gIH07XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lID0gbWFuYWdlcj8uZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZSA9IG1hbmFnZXI/Lmxhc3RfbmFtZSB8fCBcIlwiO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcocnVsZS5zdWJfcXVlc3Rpb24ubmFtZSk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIHN1Ym1pdENvdW50IH0gPSBmb3JtaWs7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yQXJyYXlbMF19J11gKTtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICAvLyBTY3JvbGwgdG8gZmlyc3Qga25vd24gZXJyb3IgaW50byB2aWV3XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBcInNtb290aFwiLCBibG9jazogXCJjZW50ZXJcIiB9KTtcbiAgfSwgW3N1Ym1pdENvdW50XSk7XG59O1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRpY2tldE1hbmFnZXIgPSB0aWNrZXQ/Lm1hbmFnZXI7XG4gIC8qIERJU0FCTEUgREVMRUdBVElPTiBGVE0gKi9cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGlvbiA9IHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSAmJiBmYWxzZTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvblxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGRlYnVnZ2VyO1xuICAgICAgY29uc29sZS5sb2coXCJUaWNrZXRGb3JtOjpvblN1Ym1pdFwiLCB2YWx1ZXMpO1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7IHN1bW1pdCwgdGlja2V0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9LFxuICAgIGV4dHJhUXVlc3Rpb25zXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXIub3duZXJfaWQgPT09IHVzZXJQcm9maWxlLmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZS5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJTQVZFOiBcIiwgdmFsKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEcmF3ZXJcbiAgICAgIG9wZW49eyEhdGlja2V0fVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IFwiYXV0b1wiLCBtYXhXaWR0aDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuXG4gICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnNlbmRCdG59PlxuICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgIDxPcmRlck51bWJlclxuICAgICAgICAgICAgbnVtYmVyPXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICBjb3B5XG4gICAgICAgICAgICB0cnVuY2F0ZWRcbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICA8L0RyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUaWNrZXRTdGF0dXMoeyB0aWNrZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kX3JlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB0aWNrZXRfc3RhdHVzX2luY29tcGxldGUgPSB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCI7XG4gIGNvbnN0IHRpY2tldF91bmFzc2lnbmVkID0gdGlja2V0Lm93bmVyX2lkID09PSAwO1xuICBjb25zdCB0aWNrZXRfY29tcGxldGUgPSB0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIjtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kX3JlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRfcmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPVxuICAgIHRpY2tldC5maW5hbF9hbW91bnQgPiAwICYmIHRpY2tldC5maW5hbF9hbW91bnQgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50O1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldC50aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgc3RhdHVzICE9PSBTVEFUVVNfVU5BU1NJR05FRCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGVcbiAgfTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1VNTUlULFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgaXNPcmRlckxvYWRpbmc6IGZhbHNlLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAxLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMSxcbiAgdGlja2V0X2xhc3RfcGFnZTogMSxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDBcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1VNTUlUOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHN1bW1pdDogcGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4ubWVtYmVyT3JkZXJzLCAuLi5kYXRhXSxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyLmlkKTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7Li4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhfVxuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoeyBjbGllbnRJZCwgbG9naW5VcmwsIHN1bW1pdCwgYXBpQmFzZVVybCB9KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdlOjogZ2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSAzO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgT05FX0RBWVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQgfHwgIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCB0YXhlc19hbW91bnQsIGFtb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzLmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCB0YXhlc1RvdGFsID0gZm9ybWF0Q3VycmVuY3kodGF4ZXNfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgdGF4ZXNUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19Sb2ltUlwiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19vb0kwVlwiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19pbV9qaFwiO1xudmFyIF80ID0gXCJjb250YWluZXJfX19OM1k0WFwiO1xudmFyIF81ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fSlcybE9cIjtcbnZhciBfNiA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVjlnSENcIjtcbnZhciBfNyA9IFwiZmlsdGVyQ29udGFpbmVyX19fckdwWVZcIjtcbnZhciBfOCA9IFwiZmlsdGVyRGF0ZUxhYmVsX19faWZENHBcIjtcbnZhciBfOSA9IFwiZmlsdGVySWNvbl9fX2wyMUtJXCI7XG52YXIgX2EgPSBcImZpbHRlckxhYmVsX19fX1Awd25cIjtcbnZhciBfYiA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX1ZtZEdxXCI7XG52YXIgX2MgPSBcImZpbHRlck51bUFjdGl2ZV9fX1Z1SENKXCI7XG52YXIgX2QgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19hckJ2UVwiO1xudmFyIF9lID0gXCJsYWJlbF9fX3lORnlqXCI7XG52YXIgX2YgPSBcInNob3dEYXRlUGlja2VyX19fVXBRYnBcIjtcbnZhciBfMTAgPSBcInNvcnRDb250YWluZXJfX19sUnNqVVwiO1xudmFyIF8xMSA9IFwic29ydEljb25fX19mVlY1S1wiO1xudmFyIF8xMiA9IFwic29ydExhYmVsX19fVXFMVENcIjtcbnZhciBfMTMgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fY21uQkRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNvbnRhaW5lclwiLCBfNSBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzYgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzcgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgXzggYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgXzkgYXMgXCJmaWx0ZXJJY29uXCIsIF9hIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9jIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9kIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfZSBhcyBcImxhYmVsXCIsIF9mIGFzIFwic2hvd0RhdGVQaWNrZXJcIiwgXzEwIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTEgYXMgXCJzb3J0SWNvblwiLCBfMTIgYXMgXCJzb3J0TGFiZWxcIiwgXzEzIGFzIFwic29ydExpc3RDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyT3JkZXJOdW1iZXJfX19ScUNiQ1wiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkTnVtYmVyX19fcHF5X0lcIjtcbnZhciBfNyA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF84ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyT3JkZXJOdW1iZXJcIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkTnVtYmVyXCIsIF83IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzggYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfMyA9IFwiY29weUljb25fX19Oa0hHT1wiO1xudmFyIF80ID0gXCJkZXRhaWxzUmVxdWlyZWRMYWJlbF9fX1kya29yXCI7XG52YXIgXzUgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgXzYgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfNyA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF84ID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF85ID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldE5vQ29udGFpbmVyX19fdnFvaE5cIjtcbnZhciBfYiA9IFwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWRfX19IWG1kd1wiO1xudmFyIF9jID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF9kID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgX2UgPSBcInJldmVyc2VkX19fREZlYV9cIjtcbnZhciBfZiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTEgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMiA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMyA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTUgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJibGFja0J1dHRvblwiLCBfMyBhcyBcImNvcHlJY29uXCIsIF80IGFzIFwiZGV0YWlsc1JlcXVpcmVkTGFiZWxcIiwgXzUgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzYgYXMgXCJsYWJlbFwiLCBfNyBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF84IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF85IGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9hIGFzIFwib3JkZXJUaWNrZXROb0NvbnRhaW5lclwiLCBfYiBhcyBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkXCIsIF9jIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9kIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2UgYXMgXCJyZXZlcnNlZFwiLCBfZiBhcyBcInRhYkJ1dHRvbnNcIiwgXzEwIGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTEgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xMiBhcyBcInRpY2tldE5vXCIsIF8xMyBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzE0IGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMTUgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xNiBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2FuY2VsQnRuX19fZ2dDZGpcIjtcbnZhciBfNiA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF83ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfOCA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF85ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgX2EgPSBcImZvb3Rlcl9fX05JTTdkXCI7XG52YXIgX2IgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2MgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfZCA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfZSA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZiA9IFwic2F2ZUJ0bl9fX05wT0VWXCI7XG52YXIgXzEwID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfMTEgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzEzID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xNCA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2FuY2VsQnRuXCIsIF82IGFzIFwiY2xvc2VCdG5cIiwgXzcgYXMgXCJjb3B5QnRuXCIsIF84IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzkgYXMgXCJkb3dubG9hZEJ0blwiLCBfYSBhcyBcImZvb3RlclwiLCBfYiBhcyBcImhlYWRlclwiLCBfYyBhcyBcIm9yZGVyTnVtYmVyXCIsIF9kIGFzIFwicXJDb2RlXCIsIF9lIGFzIFwicXJOb3RlXCIsIF9mIGFzIFwic2F2ZUJ0blwiLCBfMTAgYXMgXCJzZW5kQnRuXCIsIF8xMSBhcyBcInN0YXR1c1wiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzE0IGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi9jb21wb25lbnRzL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFN1bW1pdCwgc2V0VXNlciB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBsb2dpblVybCwgc3VwcG9ydEVtYWlsLCBzdW1taXQsIGFwaUJhc2VVcmwsIHVzZXIsIGNsaWVudElkIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRTdW1taXQoc3VtbWl0KSk7XG4gIH0sIFtzdW1taXRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFVzZXIodXNlcikpO1xuICB9LCBbdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcnMudGl0bGVcIil9PC9oMz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxNeU9yZGVyc1RpY2tldHNcbiAgICAgICAgICBsb2dpblVybD17bG9naW5Vcmx9XG4gICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgYXBpQmFzZVVybD17YXBpQmFzZVVybH1cbiAgICAgICAgLz5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiZ2V0UmVxdWVzdCIsImRlbGV0ZVJlcXVlc3QiLCJjcmVhdGVBY3Rpb24iLCJzdG9wTG9hZGluZyIsInN0YXJ0TG9hZGluZyIsInB1dFJlcXVlc3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiQVNTSUdOX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlciIsInR5cGUiLCJwdXNoIiwibmFtZSIsImxvd2VyIiwidXBwZXIiLCJ2YWx1ZSIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRVc2VyT3JkZXJzIiwiX3JlZiIsInBhZ2UiLCJwZXJQYWdlIiwic29ydCIsIm5leHQiLCJnZXRTdGF0ZSIsIl9yZWYyIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwic3VtbWl0IiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImZpbHRlcnMiLCJpZCIsInRoZW4iLCJwYXlsb2FkIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsInVzZXIiLCJ1cGRhdGVQcm9maWxlIiwicHJvZmlsZSIsIl9yZWYzIiwiaWRwQmFzZVVybCIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJTdGF0ZSIsInVzZXJQcm9maWxlIiwiZXhwYW5kIiwiZmllbGRzIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsIm9yZGVyU3RhdGUiLCJjdXJyZW50X3BhZ2UiLCJvcmRlclBhZ2UiLCJ0aWNrZXRTdGF0ZSIsInRpY2tldFBhZ2UiLCJzZXRTdW1taXQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxMSIsImVuZHBvaW50IiwiYXR0ZW5kZWVfaWQiLCJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiU3RhY2siLCJ1c2VUcmFuc2xhdGlvbiIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0IiwidCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsInZhbCIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwib25DbGljayIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5Iiwib25DaGFuZ2UiLCJwcm9wVHlwZXMiLCJmdW5jIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJCb3giLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsImtleSIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwibGFiZWwiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsInNlYXJjaE5leHQiLCJzZXRTZWFyY2hOZXh0Iiwic2V0RmlsdGVyIiwic2V0U29ydCIsImZldGNoRGF0YSIsInJlcyIsInJlc3BvbnNlIiwiZGF0YSIsIndpZGdldEhlYWRlciIsIm1kIiwibGciLCJzdW1taXRUaXRsZURhdGUiLCJkYXRhTGVuZ3RoIiwic2Nyb2xsVGhyZXNob2xkIiwibWFwIiwibm9PcmRlcnNGb3VuZCIsIkRpdmlkZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRzIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm51bWJlciIsIm9iamVjdCIsImFycmF5T2YiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJvcmRlclN1bW1hcnlCdXR0b24iLCJ2YXJpYW50Iiwic2l6ZSIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJPcmRlck51bWJlciIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsInVzZU5vdyIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIm9wZW5UaWNrZXQiLCJzZXRPcGVuVGlja2V0IiwicmVhc3NpZ25EYXRlIiwib3JkZXJXcmFwcGVyIiwidGlja2V0VGlja2V0VHlwZSIsIm93bmVyIiwidGlja2V0T3duZXJFbWFpbCIsImlzX2FjdGl2ZSIsInRpY2tldE5vIiwiY29weSIsInRydW5jYXRlZCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvbkNsb3NlIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwiZGVmYXVsdFdpZHRoIiwicmV2ZXJzZWQiLCJjbGFzc05hbWVzIiwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWQiLCJvcmRlclRpY2tldE5vQ29udGFpbmVyIiwic3R5bGUiLCJjb3B5SWNvbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsImJvb2wiLCJUYWJzIiwiVGFiIiwiRXJyb3JJY29uIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4Iiwicm9sZSIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsImhhbmRsZUNoYW5nZSIsIl8iLCJuZXdWYWx1ZSIsIm1vcmVEZXRhaWxzIiwiZGV0YWlsc1JlcXVpcmVkTGFiZWwiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0T3JkZXJUaWNrZXRzIiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImxhc3RfcGFnZSIsInRoZW1lIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwibWVtYmVyVGlja2V0cyIsImZpbmQiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY29uc29sZSIsImxvZyIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidGlja2V0c190b3RhbCIsIlRleHRGaWVsZCIsIkF1dG9jb21wbGV0ZSIsIlR5cG9ncmFwaHkiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsImZvcm1payIsInN1bW1pdElkIiwiaXNSZXF1aXJlZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJ0b3VjaGVkIiwic2V0RmllbGRUb3VjaGVkIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiQm9vbGVhbiIsImhlbHBlclRleHQiLCJ1bmRlZmluZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwib25CbHVyIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInNvbWUiLCJ0aXRsZSIsInJlbmRlcklucHV0IiwiZnVsbFdpZHRoIiwicmVxdWlyZWQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJ2IiwiZGlzYWJsZWQiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwiYXJyYXkiLCJub2RlIiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5IiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUJsdXIiLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIndyYXBwZXIiLCJUaWNrZXREZWxlZ2F0aW9uRmllbGRzIiwiZGVsZWdhdGVkX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZWRfbGFzdF9uYW1lIiwidXNlRm9ybWlrIiwieXVwIiwiVGlja2V0T3duZXJGaWVsZHMiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJhbGxvd3NEZWxlZ2F0aW9uIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsInN1YlF1ZXN0aW9uIiwic3ViUXVlc3Rpb25TbHVnIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsIm1hdGNoIiwic2NoIiwicGFyc2VBbnN3ZXJzIiwiYW5zd2VycyIsIm1hbmFnZXIiLCJvbmx5UmVsZXZhbnQiLCJhcmd1bWVudHMiLCJpbml0aWFsVmFsdWVzIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJzdWJBbnN3ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiaXNWYWxpZCIsInN1Ym1pdENvdW50IiwiZXJyb3JBcnJheSIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJvblN1Ym1pdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJleHRyYV9xdWVzdGlvbnMiLCJyZWR1Y2UiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImd1dHRlckJvdHRvbSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZm9vdGVyIiwic2F2ZUJ0biIsImNhbmNlbEJ0biIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRHJhd2VyIiwiSWNvbkJ1dHRvbiIsIkNsb3NlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwib3BlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsInRpY2tldERldGFpbENvbnRhaW5lciIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJzdWJ0aXRsZSIsInFyQ29kZSIsIm1heFdpZHRoIiwicXJfY29kZSIsInZpZXdCb3giLCJxck5vdGUiLCJpc192aXJ0dWFsIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsImlzQWN0aXZlIiwicmVmdW5kX3JlcXVlc3RzIiwiciIsInRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSIsInRpY2tldF91bmFzc2lnbmVkIiwidGlja2V0X2NvbXBsZXRlIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsImdldFN0YXR1cyIsImlzUmVmdW5kYWJsZSIsImZpbmFsX2Ftb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsImFsbG93c0RlbGVnYXRlIiwicHJvbW9fY29kZSIsIm1hbmFnZXJfaWQiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX2xhc3RfcGFnZSIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsImZvcm1lck9yZGVyIiwibyIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJNSUxMSVNFQ19UT19TRUMiLCJPTkVfREFZIiwibW9tZW50IiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInN0YXJ0RGF5Iiwic3RhcnRfZGF0ZSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImVuZF9kYXRlIiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwiTWF0aCIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsIlByb3ZpZGVyIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
|