@agilemotion/oui-react-js 2.0.25 → 2.0.27

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.
Files changed (34) hide show
  1. package/dist/RestService.js +22 -13
  2. package/dist/RestUtils.js +7 -4
  3. package/dist/components/AlertBar.js +2 -2
  4. package/dist/components/Button.js +59 -7
  5. package/dist/components/DataGrid.js +42 -16
  6. package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
  7. package/dist/components/FileThumb.js +69 -7
  8. package/dist/components/WordDocumentViewer.js +2 -2
  9. package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
  10. package/dist/components/form/BaseField.js +4 -2
  11. package/dist/components/form/Checkbox.js +3 -2
  12. package/dist/components/form/FieldSet.js +2 -2
  13. package/dist/components/form/Form.css +1 -1
  14. package/dist/components/form/Form.js +40 -38
  15. package/dist/components/form/GridField.js +6 -5
  16. package/dist/components/form/RadioGroup.js +5 -5
  17. package/dist/components/form/UploadField.js +68 -4
  18. package/dist/components/layout/Layout.js +9 -1
  19. package/dist/components/layout/View.css +2 -0
  20. package/dist/components/media/ChatViewer.js +103 -0
  21. package/dist/components/media/TrainingRoom.js +5 -5
  22. package/dist/components/media/VCRoomParticipant.js +7 -3
  23. package/dist/components/media/VCRoomWorkspace.js +19 -4
  24. package/dist/components/media/chat/ChatRoom.js +21 -10
  25. package/dist/components/media/chat/PollContainer.js +85 -18
  26. package/dist/js/ProcurementMeetings.js +11 -4
  27. package/dist/view/PortalDashboard.js +6 -5
  28. package/dist/view/security/ForgotPassword.js +4 -1
  29. package/dist/view/security/ForgotPasswordBasic.js +4 -1
  30. package/dist/view/security/RegisterInteractionPortal.js +5 -1
  31. package/dist/view/security/ResetPassword.js +4 -1
  32. package/dist/view/security/ResetPasswordBasic.js +4 -1
  33. package/dist/view/security/Security.js +16 -3
  34. package/package.json +1 -1
@@ -698,7 +698,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
698
698
  }, /*#__PURE__*/_react.default.createElement(_Alert.default, {
699
699
  variant: 'warning',
700
700
  show: reconnecting,
701
- fade: true
701
+ transition: false
702
702
  }, /*#__PURE__*/_react.default.createElement("p", {
703
703
  style: {
704
704
  margin: 0
@@ -708,7 +708,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
708
708
  show: reconnectError !== null,
709
709
  dismissible: true,
710
710
  onClose: () => setReconnectError(null),
711
- fade: true
711
+ transition: false
712
712
  }, /*#__PURE__*/_react.default.createElement("p", {
713
713
  style: {
714
714
  margin: 0
@@ -716,7 +716,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
716
716
  }, reconnectError)), /*#__PURE__*/_react.default.createElement(_Alert.default, {
717
717
  variant: 'info',
718
718
  show: activityMessage !== null,
719
- fade: true
719
+ transition: false
720
720
  }, /*#__PURE__*/_react.default.createElement("p", {
721
721
  style: {
722
722
  color: 'rgba(255, 255, 255, 0.8)'
@@ -724,7 +724,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
724
724
  }, activityMessage)), /*#__PURE__*/_react.default.createElement(_Alert.default, {
725
725
  variant: 'info',
726
726
  show: chatMessage !== null,
727
- fade: true
727
+ transition: false
728
728
  }, /*#__PURE__*/_react.default.createElement("div", {
729
729
  className: 'row',
730
730
  style: {
@@ -771,4 +771,4 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
771
771
  }))));
772
772
  }));
773
773
  var _default = exports.default = TrainingRoom;
774
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ljb24iLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1Rvb2xiYXIiLCJfVkNSb29tIiwiX1ZDUm9vbVdvcmtzcGFjZSIsIl9WQ0V2ZW50VHlwZSIsIl9BbGVydCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0Nsb3NhYmxlUGFuZWwiLCJfU2lkZUJhckNvbnRlbnQiLCJfdXNlQ29udGFpbmVyV2lkdGgiLCJfVkNSb29tUmVjb3JkZXIiLCJfUmVzdFV0aWxzIiwiX01lZGlhIiwiX09ic2VydmFibGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJTdGF0dXMiLCJMT0JCWSIsIlNFU1NJT04iLCJTRVNTSU9OX0VOREVEIiwiU1lTVEVNX0VSUk9SIiwiQ09OTkVDVElPTl9FUlJPUiIsIlNUUkVBTV9FUlJPUiIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlRyYWluaW5nUm9vbSIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsInJlY29yZFJlZiIsInVzZVJlZiIsImpvaW5lZFJlZiIsImhhc1VucmVhZENoYXRzIiwic2V0SGFzVW5yZWFkQ2hhdHMiLCJ1c2VTdGF0ZSIsInBhcnRpY2lwYW50cyIsInNldFBhcnRpY2lwYW50cyIsImhhbmRSYWlzZWQiLCJzZXRIYW5kUmFpc2VkIiwiaXNSZWNvcmRpbmciLCJzZXRJc1JlY29yZGluZyIsInZpZGVvRGlzYWJsZWQiLCJhdWRpb0Rpc2FibGVkIiwic2V0QXVkaW9EaXNhYmxlZCIsInZpZGVvTXV0ZWQiLCJzZXRWaWRlb011dGVkIiwiYXVkaW9NdXRlZCIsInNldEF1ZGlvTXV0ZWQiLCJkaXNwbGF5U3RhdGUiLCJzZXREaXNwbGF5U3RhdGUiLCJyb29tU3RhdHVzIiwic2V0Um9vbVN0YXR1cyIsInNvbWVvbmVTaGFyaW5nIiwic2V0U29tZW9uZVNoYXJpbmciLCJzaWRlQmFyT3BlbiIsInNldFNpZGVCYXJPcGVuIiwic2lkZUJhclRhYiIsInNldFNpZGVCYXJUYWIiLCJhbGxVc2VyUGFydGljaXBhbnRzTGVmdCIsInNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0IiwibG9iYnlXYWl0aW5nTGlzdCIsInNldExvYmJ5V2FpdGluZ0xpc3QiLCJpc0hvc3QiLCJzZXRJc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwic2V0SXNDaGFpclBlcnNvbiIsIm1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlIiwic2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUiLCJhdXRvUGVybWl0Iiwic2V0QXV0b1Blcm1pdCIsImNhbGVuZGFyRXZlbnQiLCJhc2tUb0pvaW4iLCJydHBDYXBhYmlsaXRpZXMiLCJzZXRSdHBDYXBhYmlsaXRpZXMiLCJhY3Rpdml0eU1lc3NhZ2UiLCJzZXRBY3Rpdml0eU1lc3NhZ2UiLCJyZWNvbm5lY3RFcnJvciIsInNldFJlY29ubmVjdEVycm9yIiwicmVjb25uZWN0aW5nIiwic2V0UmVjb25uZWN0aW5nIiwib25sb2FkU2NyZWVuU2hhcmVEYXRhIiwic2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhIiwiY2hhdE1lc3NhZ2UiLCJzZXRDaGF0TWVzc2FnZSIsImNoYXRTZW5kZXIiLCJzZXRDaGF0U2VuZGVyIiwiY3VycmVudFVzZXJGdWxsTmFtZSIsInNldEN1cnJlbnRVc2VyRnVsbE5hbWUiLCJldmVudEhhbmRsZXIiLCJtZWV0aW5nQ2hhdCIsInNldE1lZXRpbmdDaGF0Iiwic2NyZWVuU2hhcmVkIiwic2V0U2NyZWVuU2hhcmVkIiwic3RhcnRTY3JlZW5TaGFyaW5nIiwic2V0U3RhcnRTY3JlZW5TaGFyaW5nIiwicmFpc2VkSGFuZHMiLCJzZXRSYWlzZWRIYW5kcyIsIm1pbnV0ZXNTaG93biIsInNldE1pbnV0ZXNTaG93biIsInN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJzZXRTdGFydFNob3dpbmdNaW51dGVzIiwidmNSb29tV29ya3NwYWNlUmVmIiwicm9vdFJlZiIsInJvb3RXaWR0aCIsInVzZUNvbnRhaW5lcldpZHRoIiwibmFycm93TGF5b3V0IiwiYXBpIiwibG9hZENoYXRzIiwiY29uc29sZSIsImxvZyIsImZldGNoQ2hhdHMiLCJoYW5kbGVyIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJSRVFVRVNUX1RPX0pPSU5fTUVFVElORyIsIlVTRVJfSk9JTkVEIiwiYWRkVXNlciIsInBheWxvYWQiLCJVU0VSX0xFRlRfTUVFVElORyIsInJlbW92ZVVzZXIiLCJTT0NLRVRfRElTQ09OTkVDVCIsImN1cnJlbnQiLCJTT0NLRVRfQ09OTkVDVCIsInJlc3luY1Jvc3RlciIsIlBFRVJfRElTQ09OTkVDVCIsIkNSRUFURV9UUkFOU1BPUlRfRkFJTEVEIiwiQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQiLCJvbkFWU2V0dGluZ3NDaGFuZ2UiLCJTWVNURU1fRVZFTlQiLCJSQUlTRV9IQU5EIiwib25SYWlzZUhhbmQiLCJMT1dFUl9IQU5EIiwib25Mb3dlckhhbmQiLCJFTkRfU0VTU0lPTiIsImhhbmdVcCIsIlNIQVJJTkdfU1RPUFBFRCIsIkNIQVRfTUVTU0FHRSIsIm9uTWVzc2FnZSIsIkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQiLCJTWVNURU1fQUxFUlQiLCJtZXNzYWdlIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0VXNlckRldGFpbHMiLCJ1c2VybmFtZSIsInBhcnRpY2lwYW50IiwiaGFuZGxlTWVzc2FnZUFycml2ZWQiLCJuYW1lIiwiY29udGVudCIsInRyaW0iLCJ1c2VySWQiLCJjb25jYXQiLCJpbmRleCIsImZpbmRJbmRleCIsInAiLCJzcGxpY2UiLCJ1c2VFZmZlY3QiLCJzZW5kUmVxdWVzdCIsImdldENvbnRleHRSb290IiwicmVzcG9uc2UiLCJwcmV2IiwibWFwIiwidmNFdmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJlbWl0QVZTZXR0aW5nc0NoYW5nZSIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJtZWV0aW5nSWQiLCJjYXRjaCIsImVycm9yIiwiZXZlbnQiLCJtZXNzYWdlVGltZW91dCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJhZGRVc2VyVG9QYXJ0aWNpcGFudHMiLCJ1c2VyIiwicmVjb25jaWxlUGFydGljaXBhbnRzIiwidXNlcnMiLCJsaXN0IiwidSIsImF2YXRhciIsInByb2R1Y2VycyIsIkFMTF9VU0VSUyIsInRoZW4iLCJkYXRhIiwidXNlcnNJblJvb20iLCJoYW5kbGVTaWRlYmFyVG9nZ2xlIiwicGFwZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGV0YWlsIiwib3BlbiIsInN0eWxlIiwibWFyZ2luIiwiaGFuZGxlIiwic2V0dGluZ3MiLCJhdWRpb09uIiwidmlkZW9PbiIsIlV0aWxzIiwiaXNOdWxsIiwicm9vbUlkIiwicmVtb3ZlU3Vic2NyaXB0aW9ucyIsImFkZEFwcGxpY2F0aW9uQ29udGV4dFN1YnNjcmlwdGlvbiIsIm9uQ29udGV4dENoYW5nZSIsImNvbnRleHQiLCJuZXdWYWx1ZXMiLCJmaW5kIiwia2V5Iiwid2luZG93RGlzcGxheVN0YXRlIiwiaW5pdGlhbENvbnRleHQiLCJhZGRTdWJzY3JpcHRpb25zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNldEhhc0FjdGl2ZU1lZXRpbmciLCJzZXRBY3RpdmVNZWV0aW5nS2V5IiwiZXZlbnRNYW5hZ2VyIiwicmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYXNBY3RpdmVNZWV0aW5nIiwibGVhdmVNZWV0aW5nIiwidXNlckZ1bGxOYW1lIiwiaG9zdCIsIm1lIiwiYXR0ZW5kZWVzIiwiYSIsImNoYWlyUGVyc29uSWQiLCJtZWRpYSIsImpvaW5NZWV0aW5nIiwiY3JlYXRlUGFydGljaXBhbnRzIiwic2hhcmVTY3JlZW5Qcm9kdWNlckRhdGEiLCJjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyIsInJlbW92ZUxvYWRlZEdyYXBoIiwiZW5kU2Vzc2lvbiIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0IiwiZW1pdFN5c3RlbUV2ZW50IiwidG9QYXJ0aWNpcGFudElkcyIsInVuZGVmaW5lZCIsInBhcnRpY2lwYW50SWRzIiwic3lzdGVtRXZlbnRUeXBlIiwicmVjaXBpZW50cyIsInJlY29yZE1lZXRpbmciLCJtZWRpYVJlY29yZGVyIiwiaW5pdCIsInRpdGxlIiwicmVjb3JkaW5nIiwic3RvcFJlY29yZGluZ01lZXRpbmciLCJwdWJsaXNoIiwiY3JlYXRlRWxlbWVudCIsIndpZHRoIiwiaGVpZ2h0IiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwicG9zaXRpb24iLCJjbGFzc05hbWUiLCJtaW5XaWR0aCIsImJvcmRlckJvdHRvbSIsIm9uTXV0ZVZpZGVvIiwibXV0ZWQiLCJvbk11dGVBdWRpbyIsImVuZENhbGwiLCJzaG93Q2hhdCIsInNob3dQZW9wbGUiLCJzaGFyZVNjcmVlbiIsInN0b3BTaGFyZVNjcmVlbiIsInNob3dNaW51dGVzIiwiaGlkZU1pbnV0ZXMiLCJzYXZlTWludXRlcyIsInN0b3BSZWNvcmRpbmciLCJyYWlzZUhhbmQiLCJsb3dlckhhbmQiLCJpc0F1ZGlvRGV2aWNlQ29ubmVjdGVkIiwiaXNWaWRlb0RldmljZUNvbm5lY3RlZCIsImNvbG9yIiwicGFkZGluZyIsImZvbnRTaXplIiwiU1lTVEVNX0VSUk9SX01FU1NBR0UiLCJtb2RlIiwidmlld0lkIiwibWVldGluZ1RpdGxlIiwiZXZlbnRLZXkiLCJtaW51dGVzRG9jdW1lbnRJZCIsIm9uR3JpZFNldHVwIiwic2hhcmluZ0hhbmRsZXIiLCJvblN0b3BTaGFyaW5nIiwib25TdGFydFNoYXJpbmciLCJvblN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJvblN0b3BTaG93aW5nTWludXRlcyIsIm9uQXVkaW9EZXZpY2VDaGFuZ2UiLCJkZXZpY2UiLCJvbkhvc3RBdWRpb011dGUiLCJvbkhvc3RWaWRlb011dGUiLCJjbG9zZUhhbmRsZXIiLCJ0YWIiLCJyaWdodCIsImJvdHRvbSIsInZhcmlhbnQiLCJzaG93IiwiZmFkZSIsImRpc21pc3NpYmxlIiwib25DbG9zZSIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5Ub3AiLCJGcmFnbWVudCIsImRpc3BsYXkiLCJoaWRkZW4iLCJwbGF5c0lubGluZSIsImF1dG9QbGF5IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21lZGlhL1RyYWluaW5nUm9vbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7RnJhZ21lbnQsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL1V0aWxzJztcbmltcG9ydCAnLi9WaWRlby5jc3MnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbic7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICcuL1Rvb2xiYXInO1xuaW1wb3J0IHtTWVNURU1fRVJST1JfTUVTU0FHRX0gZnJvbSAnLi9WQ1Jvb20nO1xuaW1wb3J0IFZDUm9vbVdvcmtzcGFjZSBmcm9tICcuL1ZDUm9vbVdvcmtzcGFjZSc7XG5pbXBvcnQge1ZDRXZlbnRUeXBlfSBmcm9tICcuL1ZDRXZlbnRUeXBlJztcbmltcG9ydCBBbGVydCBmcm9tICdyZWFjdC1ib290c3RyYXAvQWxlcnQnO1xuaW1wb3J0IHZjRXZlbnRNYW5hZ2VyIGZyb20gJy4vVkNFdmVudE1hbmFnZXInO1xuaW1wb3J0IHNvY2tldE1hbmFnZXIgZnJvbSAnLi4vU29ja2V0TWFuYWdlcic7XG5pbXBvcnQgQ2xvc2FibGVQYW5lbCBmcm9tICcuL0Nsb3NhYmxlUGFuZWwnO1xuaW1wb3J0IFNpZGVCYXJDb250ZW50IGZyb20gJy4vU2lkZUJhckNvbnRlbnQnO1xuaW1wb3J0IHVzZUNvbnRhaW5lcldpZHRoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUNvbnRhaW5lcldpZHRoJztcbmltcG9ydCBtZWRpYVJlY29yZGVyIGZyb20gJy4vVkNSb29tUmVjb3JkZXInO1xuaW1wb3J0IHtzZW5kUmVxdWVzdH0gZnJvbSAnLi4vLi4vUmVzdFV0aWxzJztcbmltcG9ydCBtZWRpYSBmcm9tICcuLi8uLi9qcy9NZWRpYSc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuXG5jb25zdCBTdGF0dXMgPSB7XG4gICAgTE9CQlk6ICdMT0JCWScsXG4gICAgU0VTU0lPTjogJ1NFU1NJT04nLFxuICAgIFNFU1NJT05fRU5ERUQ6ICdTRVNTSU9OX0VOREVEJyxcbiAgICBTWVNURU1fRVJST1I6ICdTWVNURU1fRVJST1InLFxuICAgIENPTk5FQ1RJT05fRVJST1I6ICdDT05ORUNUSU9OX0VSUk9SJyxcbiAgICBTVFJFQU1fRVJST1I6ICdTVFJFQU1fRVJST1InXG59O1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBUcmFpbmluZ1Jvb20gPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcblxuICAgIGNvbnN0IHJlY29yZFJlZiA9IHVzZVJlZigpO1xuICAgIC8vIFRydWUgb25jZSB3ZSd2ZSBzdWNjZXNzZnVsbHkgam9pbmVkIOKAlCBsZXRzIFNPQ0tFVF9DT05ORUNUIGRpc3Rpbmd1aXNoIGEgcmVjb25uZWN0IGZyb20gdGhlXG4gICAgLy8gaW5pdGlhbCBjb25uZWN0IHNvIHdlIG9ubHkgcmVzeW5jIHRoZSByb3N0ZXIgb24gYW4gYWN0dWFsIHJlY29ubmVjdC5cbiAgICBjb25zdCBqb2luZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtoYXNVbnJlYWRDaGF0cywgc2V0SGFzVW5yZWFkQ2hhdHNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3BhcnRpY2lwYW50cywgc2V0UGFydGljaXBhbnRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGFuZFJhaXNlZCwgc2V0SGFuZFJhaXNlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzUmVjb3JkaW5nLCBzZXRJc1JlY29yZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3ZpZGVvRGlzYWJsZWRdID0gdXNlU3RhdGUocHJvcHMudmlkZW9EaXNhYmxlZCk7XG4gICAgY29uc3QgW2F1ZGlvRGlzYWJsZWQsIHNldEF1ZGlvRGlzYWJsZWRdID0gdXNlU3RhdGUocHJvcHMuYXVkaW9EaXNhYmxlZCk7XG4gICAgY29uc3QgW3ZpZGVvTXV0ZWQsIHNldFZpZGVvTXV0ZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2F1ZGlvTXV0ZWQsIHNldEF1ZGlvTXV0ZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2Rpc3BsYXlTdGF0ZSwgc2V0RGlzcGxheVN0YXRlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtyb29tU3RhdHVzLCBzZXRSb29tU3RhdHVzXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzb21lb25lU2hhcmluZywgc2V0U29tZW9uZVNoYXJpbmddID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NpZGVCYXJPcGVuLCBzZXRTaWRlQmFyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NpZGVCYXJUYWIsIHNldFNpZGVCYXJUYWJdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFthbGxVc2VyUGFydGljaXBhbnRzTGVmdCwgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtsb2JieVdhaXRpbmdMaXN0LCBzZXRMb2JieVdhaXRpbmdMaXN0XSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaXNIb3N0LCBzZXRJc0hvc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0NoYWlyUGVyc29uLCBzZXRJc0NoYWlyUGVyc29uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbbWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUsIHNldE1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlXSA9IHVzZVN0YXRlKCdERUZBVUxUJyk7XG4gICAgY29uc3QgW2F1dG9QZXJtaXQsIHNldEF1dG9QZXJtaXRdID0gdXNlU3RhdGUoIXByb3BzLmNhbGVuZGFyRXZlbnQuYXNrVG9Kb2luKTtcbiAgICBjb25zdCBbcnRwQ2FwYWJpbGl0aWVzLCBzZXRSdHBDYXBhYmlsaXRpZXNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2FjdGl2aXR5TWVzc2FnZSwgc2V0QWN0aXZpdHlNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFBlcnNpc3RlbnQsIGFjdGlvbmFibGUgZXJyb3IgYmFubmVyIChlLmcuIG1lZGlhIHJlY29ubmVjdGlvbiBnYXZlIHVwKS5cbiAgICBjb25zdCBbcmVjb25uZWN0RXJyb3IsIHNldFJlY29ubmVjdEVycm9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFRyYW5zaWVudCBcInNvY2tldCBkcm9wcGVkLCByZWNvbm5lY3RpbmdcIiBiYW5uZXIgKGNsZWFyZWQgb24gcmVjb25uZWN0KS5cbiAgICBjb25zdCBbcmVjb25uZWN0aW5nLCBzZXRSZWNvbm5lY3RpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtvbmxvYWRTY3JlZW5TaGFyZURhdGEsIHNldE9ubG9hZFNjcmVlblNoYXJlRGF0YV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY2hhdE1lc3NhZ2UsIHNldENoYXRNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjaGF0U2VuZGVyLCBzZXRDaGF0U2VuZGVyXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjdXJyZW50VXNlckZ1bGxOYW1lLCBzZXRDdXJyZW50VXNlckZ1bGxOYW1lXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtldmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFttZWV0aW5nQ2hhdCwgc2V0TWVldGluZ0NoYXRdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NjcmVlblNoYXJlZCwgc2V0U2NyZWVuU2hhcmVkXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzdGFydFNjcmVlblNoYXJpbmcsIHNldFN0YXJ0U2NyZWVuU2hhcmluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JhaXNlZEhhbmRzLCBzZXRSYWlzZWRIYW5kc10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW21pbnV0ZXNTaG93biwgc2V0TWludXRlc1Nob3duXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc3RhcnRTaG93aW5nTWludXRlcywgc2V0U3RhcnRTaG93aW5nTWludXRlc10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdmNSb29tV29ya3NwYWNlUmVmID0gdXNlUmVmKCk7XG5cbiAgICAvLyBMYXlvdXQgcmVzcG9uZHMgdG8gdGhlIHJvb20ncyBvd24gd2lkdGggKGl0IGxpdmVzIGluc2lkZSBXaW5kb3dWaWV3UG9ydCxcbiAgICAvLyBzbyB2aWV3cG9ydCBicmVha3BvaW50cyBhcmUgd3JvbmcpLiBCZWxvdyB0aGlzIHRoZSBzaWRlYmFyIG92ZXJsYXlzIHRoZVxuICAgIC8vIHdvcmtzcGFjZSBpbnN0ZWFkIG9mIGRvY2tpbmcgYmVzaWRlIGl0ICh3aGljaCBzcXVhc2hlZCB0aGUgdmlkZW8pLlxuICAgIGNvbnN0IFtyb290UmVmLCByb290V2lkdGhdID0gdXNlQ29udGFpbmVyV2lkdGgoKTtcbiAgICBjb25zdCBuYXJyb3dMYXlvdXQgPSByb290V2lkdGggPiAwICYmIHJvb3RXaWR0aCA8IDY4MDtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYWRDaGF0cyAoKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0xPQURJTkcgQ0hBVFMnKTtcbiAgICAgICAgICAgICAgICBmZXRjaENoYXRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWVldGluZy1yb29tLScgKyBwcm9wcy5jYWxlbmRhckV2ZW50LmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBwYXJ0aWNpcGFudHMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRpY2lwYW50cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjogKGV2ZW50VHlwZSwgYmUpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlJFUVVFU1RfVE9fSk9JTl9NRUVUSU5HOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRVc2VyKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuVVNFUl9MRUZUX01FRVRJTkc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVVc2VyKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1Q6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTb2NrZXQgZHJvcHBlZCDigJQgdGVsbCB0aGUgdXNlci4gVGhlIHJvc3RlciBpcyByZWNvbmNpbGVkIG9uIHJlY29ubmVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2luZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlY29ubmVjdGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNPQ0tFVF9DT05ORUNUOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhY3Qgb24gYSBSRS1jb25uZWN0IChpbml0aWFsIGNvbm5lY3QgaXMgaGFuZGxlZCBieSB0aGUgam9pbiBlZmZlY3QpLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvaW5lZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVjb25uZWN0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN5bmNSb3N0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlBFRVJfRElTQ09OTkVDVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgcGVlci1sZXZlbCBkaXNjb25uZWN0IHNpZ25hbCDigJQgcmVjb25jaWxlIHRoZSByb3N0ZXIgZnJvbSB0aGUgc2VydmVyIHRydXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0cnVzdGluZyB3ZSBnb3QgZXZlcnkgVVNFUl9MRUZUIGRlbHRhLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzeW5jUm9zdGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DUkVBVEVfVFJBTlNQT1JUX0ZBSUxFRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlY29ubmVjdEVycm9yKCdBIGNvbm5lY3Rpb24gcHJvYmxlbSBvY2N1cnJlZC4gUGxlYXNlIHJlam9pbiB0aGUgbWVldGluZy4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VEOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKGJlPy5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvblJhaXNlSGFuZChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkxvd2VySGFuZChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkVORF9TRVNTSU9OOlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZ1VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TSEFSSU5HX1NUT1BQRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTY3JlZW5TaGFyZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVzc2FnZShiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5nVXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb25uZWN0aW9uIGVycm9yIC0gUGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uIGFuZCByZS1qb2luIHRoZSBtZWV0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fQUxFUlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWNvbm5lY3RFcnJvcihiZS5wYXlsb2FkICYmIGJlLnBheWxvYWQubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYmUucGF5bG9hZC5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnQSBjb25uZWN0aW9uIHByb2JsZW0gb2NjdXJyZWQuIFBsZWFzZSByZWpvaW4gdGhlIG1lZXRpbmcuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmKHNpZGVCYXJUYWIgIT09ICdDaGF0Jykge1xuICAgICAgICAgICAgbGV0IGNoYXRNZXNzYWdlID0gbWVzc2FnZS5jaGF0TWVzc2FnZTtcbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSAhPT0gY2hhdE1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVNZXNzYWdlQXJyaXZlZCh7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUgKyBcIiBcIiArIGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICsgKGNoYXRNZXNzYWdlLmNvbnRlbnQgJiYgY2hhdE1lc3NhZ2UuY29udGVudC50cmltKCkubGVuZ3RoID4gMCA/IFwiIC0gXCIgKyBjaGF0TWVzc2FnZS5jb250ZW50IDogJycpXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzZXRIYXNVbnJlYWRDaGF0cyh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9uUmFpc2VIYW5kID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgcmFpc2VkSGFuZHMucHVzaChwYXlsb2FkLnVzZXJJZCk7XG4gICAgICAgIHNldFJhaXNlZEhhbmRzKFtdLmNvbmNhdChyYWlzZWRIYW5kcykpO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkxvd2VySGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChyYWlzZWRIYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSByYWlzZWRIYW5kcy5maW5kSW5kZXgoKHApID0+IHAgPT09IHBheWxvYWQudXNlcklkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgcmFpc2VkSGFuZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFJhaXNlZEhhbmRzKFtdLmNvbmNhdChyYWlzZWRIYW5kcykpO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobWVldGluZ0NoYXQpIHtcbiAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ0NoYXQnKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICAgICAgc2V0SGFzVW5yZWFkQ2hhdHMoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSwgW21lZXRpbmdDaGF0XSk7XG5cbiAgICBjb25zdCBmZXRjaENoYXRzID0gKCkgPT4ge1xuICAgICAgICBzZW5kUmVxdWVzdChgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9mZXRjaE1lZXRpbmdDaGF0LyR7cHJvcHMuY2FsZW5kYXJFdmVudC5pZH1gLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGRVRDSCBDSEFUIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlkKSB7XG4gICAgICAgICAgICAgICAgc2V0TWVldGluZ0NoYXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgIH0sIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25BVlNldHRpbmdzQ2hhbmdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYocGF5bG9hZCkge1xuICAgICAgICAgICAgLy8gSW1tdXRhYmxlIHVwZGF0ZTogcHJvZHVjZSBhIE5FVyBwYXJ0aWNpcGFudCBvYmplY3Qgc28gdGhlIHRpbGUgcmUtcmVuZGVycyB3aXRoIHRoZVxuICAgICAgICAgICAgLy8gZnJlc2ggbXV0ZSBzdGF0ZSAoaW4tcGxhY2UgbXV0YXRpb24gY291bGQgYmUgbWlzc2VkIG9uIGEgZ3JpZCByZXNodWZmbGUvcmVtb3VudCkuXG4gICAgICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHByZXYubWFwKChwKSA9PlxuICAgICAgICAgICAgICAgIHAudXNlcklkID09PSBwYXlsb2FkLnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICA/IHsuLi5wLCBhdWRpb011dGVkOiBwYXlsb2FkLmF1ZGlvTXV0ZWQsIHZpZGVvTXV0ZWQ6IHBheWxvYWQudmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgOiBwKSk7XG5cbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLmZpcmVFdmVudChWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCwgcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZW1pdEFWU2V0dGluZ3NDaGFuZ2UoKSB7XG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VELCB7XG4gICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgYXVkaW9NdXRlZDogYXVkaW9NdXRlZCxcbiAgICAgICAgICAgIHZpZGVvTXV0ZWQ6IHZpZGVvTXV0ZWRcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChhdWRpb011dGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBvbkFWU2V0dGluZ3NDaGFuZ2Uoe1xuICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgdmlkZW9NdXRlZCxcbiAgICAgICAgICAgICAgICBhdWRpb011dGVkXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZW1pdEFWU2V0dGluZ3NDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH0sIFthdWRpb011dGVkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodmlkZW9NdXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9LCBbdmlkZW9NdXRlZF0pO1xuXG4gICAgY29uc3QgaGFuZGxlTWVzc2FnZUFycml2ZWQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5TRVNTSU9OICYmIGV2ZW50Lm1lc3NhZ2UgJiYgZXZlbnQubWVzc2FnZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRBY3Rpdml0eU1lc3NhZ2UoZXZlbnQubWVzc2FnZSk7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2aXR5TWVzc2FnZShudWxsKTtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobWVzc2FnZVRpbWVvdXQpO1xuICAgICAgICAgICAgfSwgNDAwMCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgYWRkVXNlciA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBREQgVVNFUiA6ICcsIHBheWxvYWQpO1xuICAgICAgICBhZGRVc2VyVG9QYXJ0aWNpcGFudHMocGF5bG9hZC51c2VyKTtcbiAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQoZmFsc2UpO1xuICAgICAgICBpZiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLkxPQkJZKSB7XG4gICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5TRVNTSU9OKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ1Blb3BsZScpO1xuICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVNZXNzYWdlQXJyaXZlZCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBwYXlsb2FkLnVzZXIubmFtZSArICcgaGFzIGpvaW5lZCdcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZVVzZXIgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuY2FsZW5kYXJFdmVudC5pZCA9PT0gcGF5bG9hZC5tZWV0aW5nSWQpIHtcbiAgICAgICAgICAgIC8vIEltbXV0YWJsZSBmdW5jdGlvbmFsIHVwZGF0ZSBzbyBjb25jdXJyZW50IGRlbHRhcyBjYW4ndCBjbG9iYmVyIGVhY2ggb3RoZXIgKGxvc3QtdXBkYXRlXG4gICAgICAgICAgICAvLyByYWNlKS4gVGhlIFwiZXZlcnlvbmUgbGVmdCDihpIgTE9CQllcIiB0cmFuc2l0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIHBhcnRpY2lwYW50cyBlZmZlY3QgYmVsb3cuXG4gICAgICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHByZXYuZmlsdGVyKChwKSA9PiBwLnVzZXJJZCAhPT0gcGF5bG9hZC51c2VySWQpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBSZWNvbmNpbGUgdGhlIHBhcnRpY2lwYW50IGxpc3QgV0hPTEVTQUxFIGZyb20gdGhlIHNlcnZlcidzIGF1dGhvcml0YXRpdmUgcm9zdGVyLiBUaGlzIGlzIHRoZVxuICAgIC8vIHJlY29uY2lsaWF0aW9uIHBhdGggdGhhdCB3YXMgZW50aXJlbHkgbWlzc2luZzogaW5jcmVtZW50YWwgVVNFUl9KT0lORUQvVVNFUl9MRUZUIGRlbHRhcyBhbG9uZVxuICAgIC8vIHBlcm1hbmVudGx5IGRlc3luYyBhIGNsaWVudCB0aGF0IGRyb3BzIG9uZS4gRHJpdmVuIGJ5IHRoZSBQaGFzZS1DIEFMTF9VU0VSUyBzZXJ2ZXIgaGFuZGxlci5cbiAgICBjb25zdCByZWNvbmNpbGVQYXJ0aWNpcGFudHMgPSAodXNlcnMpID0+IHtcbiAgICAgICAgY29uc3QgbGlzdCA9ICh1c2VycyB8fCBbXSkubWFwKCh1KSA9PiAoe1xuICAgICAgICAgICAgdXNlcklkOiB1LnVzZXJJZCxcbiAgICAgICAgICAgIG5hbWU6IHUubmFtZSxcbiAgICAgICAgICAgIGF2YXRhcjogdS5hdmF0YXIsXG4gICAgICAgICAgICBhdWRpb011dGVkOiB1LmF1ZGlvTXV0ZWQsXG4gICAgICAgICAgICB2aWRlb011dGVkOiB1LnZpZGVvTXV0ZWQsXG4gICAgICAgICAgICBwcm9kdWNlcnM6IHUucHJvZHVjZXJzXG4gICAgICAgIH0pKTtcblxuICAgICAgICBzZXRQYXJ0aWNpcGFudHMobGlzdCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3luY1Jvc3RlciA9ICgpID0+IHtcbiAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuQUxMX1VTRVJTLCB7XG4gICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdST1NURVIgUkVTWU5DIDonLCByZXNwb25zZS5kYXRhLnVzZXJzSW5Sb29tKTtcbiAgICAgICAgICAgICAgICByZWNvbmNpbGVQYXJ0aWNpcGFudHMocmVzcG9uc2UuZGF0YS51c2Vyc0luUm9vbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUm9zdGVyIHJlc3luYyBmYWlsZWQnLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIFNpbmdsZSBvd25lciBvZiB0aGUgXCJhbGwgcGFydGljaXBhbnRzIGxlZnRcIiAvIHJvb20tc3RhdHVzIHRyYW5zaXRpb24sIGRlcml2ZWQgZnJvbSB0aGUgbGlzdFxuICAgIC8vICh3b3JrcyBubyBtYXR0ZXIgd2hpY2ggcGF0aCBtdXRhdGVkIHBhcnRpY2lwYW50czogZGVsdGEsIHJlY29uY2lsZSwgb3IgaW5pdGlhbCBqb2luKS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gJiYgcGFydGljaXBhbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQodHJ1ZSk7XG4gICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5MT0JCWSk7XG4gICAgICAgIH0gZWxzZSBpZiAocGFydGljaXBhbnRzLmxlbmd0aCA+IDAgJiYgYWxsVXNlclBhcnRpY2lwYW50c0xlZnQpIHtcbiAgICAgICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sIFtwYXJ0aWNpcGFudHNdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNpZGViYXJUb2dnbGUgPSAoZSkgPT4ge1xuICAgICAgICBsZXQgcGFwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVldGluZ0RpYWxvZ1BhcGVyJyk7XG4gICAgICAgIGlmIChlLmRldGFpbC5vcGVuKSB7XG4gICAgICAgICAgICBwYXBlci5zdHlsZS5tYXJnaW4gPSAnNTRweCAwIDAgMTM2cHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFwZXIuc3R5bGUubWFyZ2luID0gJzU0cHggMCAwIDAnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlci5hcGkgPSBoYW5kbGVyKCk7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zZXR0aW5ncykge1xuICAgICAgICAgICAgc2V0QXVkaW9NdXRlZCghcHJvcHMuc2V0dGluZ3MuYXVkaW9Pbik7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKCFwcm9wcy5zZXR0aW5ncy52aWRlb09uKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5zZXR0aW5nc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZFJhaXNlZCkpIHtcbiAgICAgICAgICAgIGlmIChoYW5kUmFpc2VkKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuUkFJU0VfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuTE9XRVJfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH0sIFtoYW5kUmFpc2VkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgICAgaGFuZGxlcjoge1xuICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0cmFpbmluZy1yb29tJztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uQ29udGV4dENoYW5nZTogKGNvbnRleHQsIG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobmV3VmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKGtleSkgPT4ga2V5ID09PSAnd2luZG93RGlzcGxheVN0YXRlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShuZXdWYWx1ZXMud2luZG93RGlzcGxheVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChpbml0aWFsQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShpbml0aWFsQ29udGV4dCA/IGluaXRpYWxDb250ZXh0LndpbmRvd0Rpc3BsYXlTdGF0ZSA6ICdNQVhJTUlaRUQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyLCBWQ0V2ZW50VHlwZS5SRVFVRVNUX1RPX0pPSU5fTUVFVElORywgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQsIFZDRXZlbnRUeXBlLlVTRVJfTEVGVF9NRUVUSU5HLFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCBWQ0V2ZW50VHlwZS5TT0NLRVRfQ09OTkVDVCwgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQsIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQsXG4gICAgICAgICAgICBWQ0V2ZW50VHlwZS5QRUVSX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQsIFZDRXZlbnRUeXBlLkNSRUFURV9UUkFOU1BPUlRfRkFJTEVELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVELCBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTiwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCxcbiAgICAgICAgICAgIFZDRXZlbnRUeXBlLlNZU1RFTV9BTEVSVCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIucmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucygndHJhaW5pbmctcm9vbScpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG5cbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaGFzQWN0aXZlTWVldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5sZWF2ZU1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIGxldCB1c2VyRnVsbE5hbWU7XG5cbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gR3VhcmQ6IHRoZSBjdXJyZW50IHVzZXIgbWF5IG5vdCBiZSBpbiBhdHRlbmRlZXMgKGRhdGEgZHJpZnQpIOKAlCBkb24ndCBjcmFzaDtcbiAgICAgICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgdXNlcm5hbWUgc28gY3VycmVudFVzZXJGdWxsTmFtZSBzdGF5cyB0cnV0aHkgKGdhdGVzIHRoZSByb29tIHJlbmRlcikuXG4gICAgICAgICAgICBjb25zdCBtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuYXR0ZW5kZWVzLmZpbmQoKGEpID0+IGEudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IG1lID8gbWUubmFtZSA6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q3VycmVudFVzZXJGdWxsTmFtZSh1c2VyRnVsbE5hbWUpO1xuICAgICAgICBzZXRJc0hvc3QocHJvcHMuY2FsZW5kYXJFdmVudC5ob3N0LnVzZXJuYW1lID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG4gICAgICAgIHNldElzQ2hhaXJQZXJzb24ocHJvcHMuY2FsZW5kYXJFdmVudC5jaGFpclBlcnNvbklkID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1lZGlhLmpvaW5NZWV0aW5nKHByb3BzLmNhbGVuZGFyRXZlbnQsIHByb3BzLnNldHRpbmdzLCB1c2VyRnVsbE5hbWUpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdKT0lOIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICBqb2luZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBhcnRpY2lwYW50cyhyZXNwb25zZS5wYXJ0aWNpcGFudHMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSdHBDYXBhYmlsaXRpZXMocmVzcG9uc2UucnRwQ2FwYWJpbGl0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhKHJlc3BvbnNlLnNoYXJlU2NyZWVuUHJvZHVjZXJEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVyaXZlIGZyb20gdGhlIEFDSydzIHJvc3Rlciwgbm90IHRoZSBzdGlsbC1lbXB0eSBgcGFydGljaXBhbnRzYCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhyZXNwb25zZS5wYXJ0aWNpcGFudHMgJiYgcmVzcG9uc2UucGFydGljaXBhbnRzLmxlbmd0aCA+IDAgPyBTdGF0dXMuU0VTU0lPTiA6IFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShudWxsKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRVc2VyVG9QYXJ0aWNpcGFudHModXNlcikge1xuICAgICAgICAvLyBJbW11dGFibGUsIGRlZHVwLWJ5LXVzZXJJZCBmdW5jdGlvbmFsIHVwZGF0ZS4gTmV2ZXIgbXV0YXRlIGluIHBsYWNlICsgY29uY2F0ICh0aGF0IHJhY2VzXG4gICAgICAgIC8vIHdpdGggY29uY3VycmVudCBkZWx0YXMgYW5kIGxvc2VzIHVwZGF0ZXMpLiBVcGRhdGUtaW4tcGxhY2UtYnkta2V5IGlmIHByZXNlbnQsIGVsc2UgYXBwZW5kLlxuICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2LmZpbmQoKHUpID0+IHUudXNlcklkID09PSB1c2VyLnVzZXJJZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5tYXAoKHApID0+IHAudXNlcklkID09PSB1c2VyLnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdmF0YXI6IHVzZXIuYXZhdGFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9NdXRlZDogdXNlci5hdWRpb011dGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZDogdXNlci52aWRlb011dGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXJzOiB1c2VyLnByb2R1Y2Vyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwge1xuICAgICAgICAgICAgICAgIHVzZXJJZDogdXNlci51c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlci5uYW1lLFxuICAgICAgICAgICAgICAgIGF2YXRhcjogdXNlci5hdmF0YXIsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZDogdXNlci5hdWRpb011dGVkLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQ6IHVzZXIudmlkZW9NdXRlZCxcbiAgICAgICAgICAgICAgICBwcm9kdWNlcnM6IHVzZXIucHJvZHVjZXJzXG4gICAgICAgICAgICB9XTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MgPSAodXNlcklkLCBhdWRpb011dGVkLCB2aWRlb011dGVkKSA9PiB7XG5cbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlUGFydGljaXBhbnRzID0gKHVzZXJzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBTEwgVVNFUlMgcmVjZWl2ZWQgYW5kIGNyZWF0aW5nIHBhcnRpY2lwYW50cyA6ICcsIHVzZXJzKTtcbiAgICAgICAgLy8gSW5pdGlhbCByb3N0ZXIgZnJvbSB0aGUgSk9JTiBhY2sg4oCUIHNldCBpdCB3aG9sZXNhbGUgKHNhbWUgc2hhcGUgYXMgcmVjb25jaWxlKS5cbiAgICAgICAgcmVjb25jaWxlUGFydGljaXBhbnRzKHVzZXJzKTtcblxuICAgICAgICBpZiAodXNlcnMgJiYgdXNlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZ1VwID0gKCkgPT4ge1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmxlYXZlTWVldGluZyhwcm9wcy5jYWxlbmRhckV2ZW50LmlkKTtcbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIucmVtb3ZlTG9hZGVkR3JhcGgoJ3dpbmRvdycpO1xuICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgIHNldFNpZGVCYXJUYWIoJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBlbmRTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbkNvbmZpcm1EaWFsb2coXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZW5kIHRoZSBjdXJyZW50IHNlc3Npb24/XCIsIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVuZFNlc3Npb24ocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZW1vdmVMb2FkZWRHcmFwaCgnd2luZG93Jyk7XG4gICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW1pdFN5c3RlbUV2ZW50ID0gKGV2ZW50VHlwZSwgZGF0YSwgdG9QYXJ0aWNpcGFudElkcyA9IG51bGwpID0+IHtcbiAgICAgICAgbGV0IHBhcnRpY2lwYW50SWRzID0gW107XG4gICAgICAgIGlmICghdG9QYXJ0aWNpcGFudElkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudCBvZiBwYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFydGljaXBhbnQudXNlcklkICE9PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudElkcy5wdXNoKHBhcnRpY2lwYW50LnVzZXJJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydGljaXBhbnRJZHMgPSBwYXJ0aWNpcGFudElkcy5jb25jYXQodG9QYXJ0aWNpcGFudElkcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQsIHtcbiAgICAgICAgICAgIHN5c3RlbUV2ZW50VHlwZTogZXZlbnRUeXBlLFxuICAgICAgICAgICAgcmVjaXBpZW50czogcGFydGljaXBhbnRJZHMsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVjb3JkTWVldGluZyA9ICgpID0+IHtcbiAgICAgICAgbWVkaWFSZWNvcmRlci5pbml0KHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsIHByb3BzLmNhbGVuZGFyRXZlbnQudGl0bGUpO1xuICAgICAgICBzZXRJc1JlY29yZGluZyh0cnVlKTtcbiAgICAgICAgZW1pdFN5c3RlbUV2ZW50KCdNRUVUSU5HX1JFQ09SRElORycsIHtcbiAgICAgICAgICAgIHJlY29yZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVkaWFSZWNvcmRlci5yZWNvcmRNZWV0aW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN0b3BSZWNvcmRpbmdNZWV0aW5nID0gKHB1Ymxpc2ggPSB0cnVlKSA9PiB7XG4gICAgICAgIHNldElzUmVjb3JkaW5nKGZhbHNlKTtcblxuICAgICAgICBpZiAocHVibGlzaCkge1xuICAgICAgICAgICAgZW1pdFN5c3RlbUV2ZW50KCdNRUVUSU5HX1JFQ09SRElORycsIHtcbiAgICAgICAgICAgICAgICByZWNvcmRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbWVkaWFSZWNvcmRlci5zdG9wUmVjb3JkaW5nTWVldGluZygpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IGZsZXgtbm93cmFwIG5vLW1hcmdpbiBuby1wYWRkaW5nIHctMTAwIGgtMTAwJ30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfSBzdHlsZT17e21pbldpZHRoOiAnMjgwcHgnfX0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nIHctMTAwIGgtMTAwJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICc4MHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhciBldmVudEhhbmRsZXI9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NdXRlVmlkZW86IChtdXRlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmlkZW9NdXRlZChtdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTXV0ZUF1ZGlvOiAobXV0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF1ZGlvTXV0ZWQobXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRDYWxsOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5nVXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kU2Vzc2lvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kU2Vzc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hhdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hDaGF0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGVvcGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVNjcmVlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wU2hhcmVTY3JlZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWludXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZU1pbnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU1pbnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2Y1Jvb21Xb3Jrc3BhY2VSZWYuY3VycmVudCAmJiB2Y1Jvb21Xb3Jrc3BhY2VSZWYuY3VycmVudC5zYXZlTWludXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjUm9vbVdvcmtzcGFjZVJlZi5jdXJyZW50LnNhdmVNaW51dGVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZE1lZXRpbmc6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZE1lZXRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFJlY29yZGluZzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFJlY29yZGluZ01lZXRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VIYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIYW5kUmFpc2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dlckhhbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhhbmRSYWlzZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNVbnJlYWRDaGF0cz17aGFzVW5yZWFkQ2hhdHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzPXtwYXJ0aWNpcGFudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZFJhaXNlZD17aGFuZFJhaXNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0Rpc2FibGVkPXt2aWRlb0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGlzYWJsZWQ9e2F1ZGlvRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZD17dmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb011dGVkPXthdWRpb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGF0ZT17ZGlzcGxheVN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlblNoYXJlZD17c2NyZWVuU2hhcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNTaG93bj17bWludXRlc1Nob3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXM9e3Jvb21TdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtwcm9wcy5jYWxlbmRhckV2ZW50Lmhvc3QudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QZXJtaXQ9eyFwcm9wcy5jYWxlbmRhckV2ZW50Lmhvc3QuYXNrVG9Kb2lufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbWVvbmVTaGFyaW5nPXtzb21lb25lU2hhcmluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlY29yZGluZz17aXNSZWNvcmRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VkSGFuZHM9e3JhaXNlZEhhbmRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXVkaW9EZXZpY2VDb25uZWN0ZWQ9e3Byb3BzLnNldHRpbmdzLmlzQXVkaW9EZXZpY2VDb25uZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWRlb0RldmljZUNvbm5lY3RlZD17cHJvcHMuc2V0dGluZ3MuaXNWaWRlb0RldmljZUNvbm5lY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXMgPT09IFN0YXR1cy5TWVNURU1fRVJST1IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzNSwgNjMsIDMzKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICczMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7U1lTVEVNX0VSUk9SX01FU1NBR0V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLkNPTk5FQ1RJT05fRVJST1IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzNSwgNjMsIDMzKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICczMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1NZU1RFTV9FUlJPUl9NRVNTQUdFfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBDYXBhYmlsaXRpZXMgJiYgcGFydGljaXBhbnRzICYmIGN1cnJlbnRVc2VyRnVsbE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gfHwgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLkxPQkJZKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWQ1Jvb21Xb3Jrc3BhY2UgcmVmPXt2Y1Jvb21Xb3Jrc3BhY2VSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9e21lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb011dGVkPXthdWRpb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZD17dmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUaXRsZT17cHJvcHMuY2FsZW5kYXJFdmVudC50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtwcm9wcy5jYWxlbmRhckV2ZW50LmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNEb2N1bWVudElkPXtwcm9wcy5jYWxlbmRhckV2ZW50Lm1pbnV0ZXNEb2N1bWVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0lkPXtwcm9wcy5jYWxlbmRhckV2ZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFVzZXJGdWxsTmFtZT17Y3VycmVudFVzZXJGdWxsTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uR3JpZFNldHVwPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlQmFyVGFiPXtzaWRlQmFyVGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cz17cm9vbVN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9zdD17aXNIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17aXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U2NyZWVuU2hhcmluZz17c3RhcnRTY3JlZW5TaGFyaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmluZ0hhbmRsZXI9eyhzb21lb25lU2hhcmluZykgPT4gc2V0U29tZW9uZVNoYXJpbmcoc29tZW9uZVNoYXJpbmcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdG9wU2hhcmluZz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0YXJ0U2hhcmluZz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTaG93aW5nTWludXRlcz17c3RhcnRTaG93aW5nTWludXRlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhcnRTaG93aW5nTWludXRlcz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0b3BTaG93aW5nTWludXRlcz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlc1Nob3duPXttaW51dGVzU2hvd259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUGVybWl0PXthdXRvUGVybWl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwQ2FwYWJpbGl0aWVzPXtydHBDYXBhYmlsaXRpZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaGFyZWQ9e3NjcmVlblNoYXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGF0ZT17ZGlzcGxheVN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25sb2FkU2NyZWVuU2hhcmVEYXRhPXtvbmxvYWRTY3JlZW5TaGFyZURhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxVc2VyUGFydGljaXBhbnRzTGVmdD17YWxsVXNlclBhcnRpY2lwYW50c0xlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkF1ZGlvRGV2aWNlQ2hhbmdlPXsoZGV2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXVkaW9EaXNhYmxlZChVdGlscy5pc051bGwoZGV2aWNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0QXVkaW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHRydWUsIHBhcnRpY2lwYW50LnZpZGVvTXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG9zdFZpZGVvTXV0ZT17KHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MocGFydGljaXBhbnQudXNlcklkLCBwYXJ0aWNpcGFudC5hdWRpb011dGVkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzaWRlQmFyT3BlbiAmJiBzaWRlQmFyVGFiICYmIHJvb21TdGF0dXMgPT09IFN0YXR1cy5TRVNTSU9OICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtuYXJyb3dMYXlvdXQgPyAnY2xvc2FibGUtcGFuZWwtb3ZlcmxheScgOiAnY2xvc2FibGUtcGFuZWwtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2FibGVQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlSGFuZGxlcj17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyVGFiKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3NpZGVCYXJUYWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNpZGVCYXJDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdDaGF0PXttZWV0aW5nQ2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtpc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e2lzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYj17c2lkZUJhclRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0lkPXtwcm9wcy5jYWxlbmRhckV2ZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0QXVkaW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgdHJ1ZSwgcGFydGljaXBhbnQudmlkZW9NdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG9zdFZpZGVvTXV0ZT17KHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Nsb3NhYmxlUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnNDhweCcsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnNDhweCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnd2FybmluZyd9XG4gICAgICAgICAgICAgICAgICAgIHNob3c9e3JlY29ubmVjdGluZ31cbiAgICAgICAgICAgICAgICAgICAgZmFkZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7bWFyZ2luOiAwfX0+UmVjb25uZWN0aW5n4oCmPC9wPlxuICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXtyZWNvbm5lY3RFcnJvciAhPT0gbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgZGlzbWlzc2libGVcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmVjb25uZWN0RXJyb3IobnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e21hcmdpbjogMH19PntyZWNvbm5lY3RFcnJvcn08L3A+XG4gICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17J2luZm8nfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXthY3Rpdml0eU1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PnthY3Rpdml0eU1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydpbmZvJ31cbiAgICAgICAgICAgICAgICAgICAgc2hvdz17Y2hhdE1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgd2hpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJzhweCdcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0NIQVRfQlVCQkxFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2NoYXRTZW5kZXJ9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpblRvcDogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+PHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57Y2hhdE1lc3NhZ2V9PC9wPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgey8qSGlkZGVuIHZpZGVvIHRvIGNhcHR1cmUgcmVjb3JkaW5ncyovfVxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiAnbm9uZSd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW49e2ZhbHNlfSBtdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxheXNJbmxpbmUgYXV0b1BsYXkgcmVmPXtyZWNvcmRSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzIwMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbiAgICAgICAgO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBUcmFpbmluZ1Jvb207XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksbUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGdCQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFQLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVSxlQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVyxjQUFBLEdBQUFULHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBWSxjQUFBLEdBQUFWLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYSxlQUFBLEdBQUFYLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYyxrQkFBQSxHQUFBWixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWUsZUFBQSxHQUFBYixzQkFBQSxDQUFBRixP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
774
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ljb24iLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1Rvb2xiYXIiLCJfVkNSb29tIiwiX1ZDUm9vbVdvcmtzcGFjZSIsIl9WQ0V2ZW50VHlwZSIsIl9BbGVydCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0Nsb3NhYmxlUGFuZWwiLCJfU2lkZUJhckNvbnRlbnQiLCJfdXNlQ29udGFpbmVyV2lkdGgiLCJfVkNSb29tUmVjb3JkZXIiLCJfUmVzdFV0aWxzIiwiX01lZGlhIiwiX09ic2VydmFibGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJTdGF0dXMiLCJMT0JCWSIsIlNFU1NJT04iLCJTRVNTSU9OX0VOREVEIiwiU1lTVEVNX0VSUk9SIiwiQ09OTkVDVElPTl9FUlJPUiIsIlNUUkVBTV9FUlJPUiIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlRyYWluaW5nUm9vbSIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsInJlY29yZFJlZiIsInVzZVJlZiIsImpvaW5lZFJlZiIsImhhc1VucmVhZENoYXRzIiwic2V0SGFzVW5yZWFkQ2hhdHMiLCJ1c2VTdGF0ZSIsInBhcnRpY2lwYW50cyIsInNldFBhcnRpY2lwYW50cyIsImhhbmRSYWlzZWQiLCJzZXRIYW5kUmFpc2VkIiwiaXNSZWNvcmRpbmciLCJzZXRJc1JlY29yZGluZyIsInZpZGVvRGlzYWJsZWQiLCJhdWRpb0Rpc2FibGVkIiwic2V0QXVkaW9EaXNhYmxlZCIsInZpZGVvTXV0ZWQiLCJzZXRWaWRlb011dGVkIiwiYXVkaW9NdXRlZCIsInNldEF1ZGlvTXV0ZWQiLCJkaXNwbGF5U3RhdGUiLCJzZXREaXNwbGF5U3RhdGUiLCJyb29tU3RhdHVzIiwic2V0Um9vbVN0YXR1cyIsInNvbWVvbmVTaGFyaW5nIiwic2V0U29tZW9uZVNoYXJpbmciLCJzaWRlQmFyT3BlbiIsInNldFNpZGVCYXJPcGVuIiwic2lkZUJhclRhYiIsInNldFNpZGVCYXJUYWIiLCJhbGxVc2VyUGFydGljaXBhbnRzTGVmdCIsInNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0IiwibG9iYnlXYWl0aW5nTGlzdCIsInNldExvYmJ5V2FpdGluZ0xpc3QiLCJpc0hvc3QiLCJzZXRJc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwic2V0SXNDaGFpclBlcnNvbiIsIm1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlIiwic2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUiLCJhdXRvUGVybWl0Iiwic2V0QXV0b1Blcm1pdCIsImNhbGVuZGFyRXZlbnQiLCJhc2tUb0pvaW4iLCJydHBDYXBhYmlsaXRpZXMiLCJzZXRSdHBDYXBhYmlsaXRpZXMiLCJhY3Rpdml0eU1lc3NhZ2UiLCJzZXRBY3Rpdml0eU1lc3NhZ2UiLCJyZWNvbm5lY3RFcnJvciIsInNldFJlY29ubmVjdEVycm9yIiwicmVjb25uZWN0aW5nIiwic2V0UmVjb25uZWN0aW5nIiwib25sb2FkU2NyZWVuU2hhcmVEYXRhIiwic2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhIiwiY2hhdE1lc3NhZ2UiLCJzZXRDaGF0TWVzc2FnZSIsImNoYXRTZW5kZXIiLCJzZXRDaGF0U2VuZGVyIiwiY3VycmVudFVzZXJGdWxsTmFtZSIsInNldEN1cnJlbnRVc2VyRnVsbE5hbWUiLCJldmVudEhhbmRsZXIiLCJtZWV0aW5nQ2hhdCIsInNldE1lZXRpbmdDaGF0Iiwic2NyZWVuU2hhcmVkIiwic2V0U2NyZWVuU2hhcmVkIiwic3RhcnRTY3JlZW5TaGFyaW5nIiwic2V0U3RhcnRTY3JlZW5TaGFyaW5nIiwicmFpc2VkSGFuZHMiLCJzZXRSYWlzZWRIYW5kcyIsIm1pbnV0ZXNTaG93biIsInNldE1pbnV0ZXNTaG93biIsInN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJzZXRTdGFydFNob3dpbmdNaW51dGVzIiwidmNSb29tV29ya3NwYWNlUmVmIiwicm9vdFJlZiIsInJvb3RXaWR0aCIsInVzZUNvbnRhaW5lcldpZHRoIiwibmFycm93TGF5b3V0IiwiYXBpIiwibG9hZENoYXRzIiwiY29uc29sZSIsImxvZyIsImZldGNoQ2hhdHMiLCJoYW5kbGVyIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJSRVFVRVNUX1RPX0pPSU5fTUVFVElORyIsIlVTRVJfSk9JTkVEIiwiYWRkVXNlciIsInBheWxvYWQiLCJVU0VSX0xFRlRfTUVFVElORyIsInJlbW92ZVVzZXIiLCJTT0NLRVRfRElTQ09OTkVDVCIsImN1cnJlbnQiLCJTT0NLRVRfQ09OTkVDVCIsInJlc3luY1Jvc3RlciIsIlBFRVJfRElTQ09OTkVDVCIsIkNSRUFURV9UUkFOU1BPUlRfRkFJTEVEIiwiQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQiLCJvbkFWU2V0dGluZ3NDaGFuZ2UiLCJTWVNURU1fRVZFTlQiLCJSQUlTRV9IQU5EIiwib25SYWlzZUhhbmQiLCJMT1dFUl9IQU5EIiwib25Mb3dlckhhbmQiLCJFTkRfU0VTU0lPTiIsImhhbmdVcCIsIlNIQVJJTkdfU1RPUFBFRCIsIkNIQVRfTUVTU0FHRSIsIm9uTWVzc2FnZSIsIkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQiLCJTWVNURU1fQUxFUlQiLCJtZXNzYWdlIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0VXNlckRldGFpbHMiLCJ1c2VybmFtZSIsInBhcnRpY2lwYW50IiwiaGFuZGxlTWVzc2FnZUFycml2ZWQiLCJuYW1lIiwiY29udGVudCIsInRyaW0iLCJ1c2VySWQiLCJjb25jYXQiLCJpbmRleCIsImZpbmRJbmRleCIsInAiLCJzcGxpY2UiLCJ1c2VFZmZlY3QiLCJzZW5kUmVxdWVzdCIsImdldENvbnRleHRSb290IiwicmVzcG9uc2UiLCJwcmV2IiwibWFwIiwidmNFdmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJlbWl0QVZTZXR0aW5nc0NoYW5nZSIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJtZWV0aW5nSWQiLCJjYXRjaCIsImVycm9yIiwiZXZlbnQiLCJtZXNzYWdlVGltZW91dCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJhZGRVc2VyVG9QYXJ0aWNpcGFudHMiLCJ1c2VyIiwicmVjb25jaWxlUGFydGljaXBhbnRzIiwidXNlcnMiLCJsaXN0IiwidSIsImF2YXRhciIsInByb2R1Y2VycyIsIkFMTF9VU0VSUyIsInRoZW4iLCJkYXRhIiwidXNlcnNJblJvb20iLCJoYW5kbGVTaWRlYmFyVG9nZ2xlIiwicGFwZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGV0YWlsIiwib3BlbiIsInN0eWxlIiwibWFyZ2luIiwiaGFuZGxlIiwic2V0dGluZ3MiLCJhdWRpb09uIiwidmlkZW9PbiIsIlV0aWxzIiwiaXNOdWxsIiwicm9vbUlkIiwicmVtb3ZlU3Vic2NyaXB0aW9ucyIsImFkZEFwcGxpY2F0aW9uQ29udGV4dFN1YnNjcmlwdGlvbiIsIm9uQ29udGV4dENoYW5nZSIsImNvbnRleHQiLCJuZXdWYWx1ZXMiLCJmaW5kIiwia2V5Iiwid2luZG93RGlzcGxheVN0YXRlIiwiaW5pdGlhbENvbnRleHQiLCJhZGRTdWJzY3JpcHRpb25zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNldEhhc0FjdGl2ZU1lZXRpbmciLCJzZXRBY3RpdmVNZWV0aW5nS2V5IiwiZXZlbnRNYW5hZ2VyIiwicmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYXNBY3RpdmVNZWV0aW5nIiwibGVhdmVNZWV0aW5nIiwidXNlckZ1bGxOYW1lIiwiaG9zdCIsIm1lIiwiYXR0ZW5kZWVzIiwiYSIsImNoYWlyUGVyc29uSWQiLCJtZWRpYSIsImpvaW5NZWV0aW5nIiwiY3JlYXRlUGFydGljaXBhbnRzIiwic2hhcmVTY3JlZW5Qcm9kdWNlckRhdGEiLCJjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyIsInJlbW92ZUxvYWRlZEdyYXBoIiwiZW5kU2Vzc2lvbiIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0IiwiZW1pdFN5c3RlbUV2ZW50IiwidG9QYXJ0aWNpcGFudElkcyIsInVuZGVmaW5lZCIsInBhcnRpY2lwYW50SWRzIiwic3lzdGVtRXZlbnRUeXBlIiwicmVjaXBpZW50cyIsInJlY29yZE1lZXRpbmciLCJtZWRpYVJlY29yZGVyIiwiaW5pdCIsInRpdGxlIiwicmVjb3JkaW5nIiwic3RvcFJlY29yZGluZ01lZXRpbmciLCJwdWJsaXNoIiwiY3JlYXRlRWxlbWVudCIsIndpZHRoIiwiaGVpZ2h0IiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwicG9zaXRpb24iLCJjbGFzc05hbWUiLCJtaW5XaWR0aCIsImJvcmRlckJvdHRvbSIsIm9uTXV0ZVZpZGVvIiwibXV0ZWQiLCJvbk11dGVBdWRpbyIsImVuZENhbGwiLCJzaG93Q2hhdCIsInNob3dQZW9wbGUiLCJzaGFyZVNjcmVlbiIsInN0b3BTaGFyZVNjcmVlbiIsInNob3dNaW51dGVzIiwiaGlkZU1pbnV0ZXMiLCJzYXZlTWludXRlcyIsInN0b3BSZWNvcmRpbmciLCJyYWlzZUhhbmQiLCJsb3dlckhhbmQiLCJpc0F1ZGlvRGV2aWNlQ29ubmVjdGVkIiwiaXNWaWRlb0RldmljZUNvbm5lY3RlZCIsImNvbG9yIiwicGFkZGluZyIsImZvbnRTaXplIiwiU1lTVEVNX0VSUk9SX01FU1NBR0UiLCJtb2RlIiwidmlld0lkIiwibWVldGluZ1RpdGxlIiwiZXZlbnRLZXkiLCJtaW51dGVzRG9jdW1lbnRJZCIsIm9uR3JpZFNldHVwIiwic2hhcmluZ0hhbmRsZXIiLCJvblN0b3BTaGFyaW5nIiwib25TdGFydFNoYXJpbmciLCJvblN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJvblN0b3BTaG93aW5nTWludXRlcyIsIm9uQXVkaW9EZXZpY2VDaGFuZ2UiLCJkZXZpY2UiLCJvbkhvc3RBdWRpb011dGUiLCJvbkhvc3RWaWRlb011dGUiLCJjbG9zZUhhbmRsZXIiLCJ0YWIiLCJyaWdodCIsImJvdHRvbSIsInZhcmlhbnQiLCJzaG93IiwidHJhbnNpdGlvbiIsImRpc21pc3NpYmxlIiwib25DbG9zZSIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5Ub3AiLCJGcmFnbWVudCIsImRpc3BsYXkiLCJoaWRkZW4iLCJwbGF5c0lubGluZSIsImF1dG9QbGF5IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21lZGlhL1RyYWluaW5nUm9vbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7RnJhZ21lbnQsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL1V0aWxzJztcbmltcG9ydCAnLi9WaWRlby5jc3MnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbic7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICcuL1Rvb2xiYXInO1xuaW1wb3J0IHtTWVNURU1fRVJST1JfTUVTU0FHRX0gZnJvbSAnLi9WQ1Jvb20nO1xuaW1wb3J0IFZDUm9vbVdvcmtzcGFjZSBmcm9tICcuL1ZDUm9vbVdvcmtzcGFjZSc7XG5pbXBvcnQge1ZDRXZlbnRUeXBlfSBmcm9tICcuL1ZDRXZlbnRUeXBlJztcbmltcG9ydCBBbGVydCBmcm9tICdyZWFjdC1ib290c3RyYXAvQWxlcnQnO1xuaW1wb3J0IHZjRXZlbnRNYW5hZ2VyIGZyb20gJy4vVkNFdmVudE1hbmFnZXInO1xuaW1wb3J0IHNvY2tldE1hbmFnZXIgZnJvbSAnLi4vU29ja2V0TWFuYWdlcic7XG5pbXBvcnQgQ2xvc2FibGVQYW5lbCBmcm9tICcuL0Nsb3NhYmxlUGFuZWwnO1xuaW1wb3J0IFNpZGVCYXJDb250ZW50IGZyb20gJy4vU2lkZUJhckNvbnRlbnQnO1xuaW1wb3J0IHVzZUNvbnRhaW5lcldpZHRoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUNvbnRhaW5lcldpZHRoJztcbmltcG9ydCBtZWRpYVJlY29yZGVyIGZyb20gJy4vVkNSb29tUmVjb3JkZXInO1xuaW1wb3J0IHtzZW5kUmVxdWVzdH0gZnJvbSAnLi4vLi4vUmVzdFV0aWxzJztcbmltcG9ydCBtZWRpYSBmcm9tICcuLi8uLi9qcy9NZWRpYSc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuXG5jb25zdCBTdGF0dXMgPSB7XG4gICAgTE9CQlk6ICdMT0JCWScsXG4gICAgU0VTU0lPTjogJ1NFU1NJT04nLFxuICAgIFNFU1NJT05fRU5ERUQ6ICdTRVNTSU9OX0VOREVEJyxcbiAgICBTWVNURU1fRVJST1I6ICdTWVNURU1fRVJST1InLFxuICAgIENPTk5FQ1RJT05fRVJST1I6ICdDT05ORUNUSU9OX0VSUk9SJyxcbiAgICBTVFJFQU1fRVJST1I6ICdTVFJFQU1fRVJST1InXG59O1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBUcmFpbmluZ1Jvb20gPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcblxuICAgIGNvbnN0IHJlY29yZFJlZiA9IHVzZVJlZigpO1xuICAgIC8vIFRydWUgb25jZSB3ZSd2ZSBzdWNjZXNzZnVsbHkgam9pbmVkIOKAlCBsZXRzIFNPQ0tFVF9DT05ORUNUIGRpc3Rpbmd1aXNoIGEgcmVjb25uZWN0IGZyb20gdGhlXG4gICAgLy8gaW5pdGlhbCBjb25uZWN0IHNvIHdlIG9ubHkgcmVzeW5jIHRoZSByb3N0ZXIgb24gYW4gYWN0dWFsIHJlY29ubmVjdC5cbiAgICBjb25zdCBqb2luZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtoYXNVbnJlYWRDaGF0cywgc2V0SGFzVW5yZWFkQ2hhdHNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3BhcnRpY2lwYW50cywgc2V0UGFydGljaXBhbnRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGFuZFJhaXNlZCwgc2V0SGFuZFJhaXNlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzUmVjb3JkaW5nLCBzZXRJc1JlY29yZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3ZpZGVvRGlzYWJsZWRdID0gdXNlU3RhdGUocHJvcHMudmlkZW9EaXNhYmxlZCk7XG4gICAgY29uc3QgW2F1ZGlvRGlzYWJsZWQsIHNldEF1ZGlvRGlzYWJsZWRdID0gdXNlU3RhdGUocHJvcHMuYXVkaW9EaXNhYmxlZCk7XG4gICAgY29uc3QgW3ZpZGVvTXV0ZWQsIHNldFZpZGVvTXV0ZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2F1ZGlvTXV0ZWQsIHNldEF1ZGlvTXV0ZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2Rpc3BsYXlTdGF0ZSwgc2V0RGlzcGxheVN0YXRlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtyb29tU3RhdHVzLCBzZXRSb29tU3RhdHVzXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzb21lb25lU2hhcmluZywgc2V0U29tZW9uZVNoYXJpbmddID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NpZGVCYXJPcGVuLCBzZXRTaWRlQmFyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NpZGVCYXJUYWIsIHNldFNpZGVCYXJUYWJdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFthbGxVc2VyUGFydGljaXBhbnRzTGVmdCwgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtsb2JieVdhaXRpbmdMaXN0LCBzZXRMb2JieVdhaXRpbmdMaXN0XSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaXNIb3N0LCBzZXRJc0hvc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0NoYWlyUGVyc29uLCBzZXRJc0NoYWlyUGVyc29uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbbWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUsIHNldE1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlXSA9IHVzZVN0YXRlKCdERUZBVUxUJyk7XG4gICAgY29uc3QgW2F1dG9QZXJtaXQsIHNldEF1dG9QZXJtaXRdID0gdXNlU3RhdGUoIXByb3BzLmNhbGVuZGFyRXZlbnQuYXNrVG9Kb2luKTtcbiAgICBjb25zdCBbcnRwQ2FwYWJpbGl0aWVzLCBzZXRSdHBDYXBhYmlsaXRpZXNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2FjdGl2aXR5TWVzc2FnZSwgc2V0QWN0aXZpdHlNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFBlcnNpc3RlbnQsIGFjdGlvbmFibGUgZXJyb3IgYmFubmVyIChlLmcuIG1lZGlhIHJlY29ubmVjdGlvbiBnYXZlIHVwKS5cbiAgICBjb25zdCBbcmVjb25uZWN0RXJyb3IsIHNldFJlY29ubmVjdEVycm9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFRyYW5zaWVudCBcInNvY2tldCBkcm9wcGVkLCByZWNvbm5lY3RpbmdcIiBiYW5uZXIgKGNsZWFyZWQgb24gcmVjb25uZWN0KS5cbiAgICBjb25zdCBbcmVjb25uZWN0aW5nLCBzZXRSZWNvbm5lY3RpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtvbmxvYWRTY3JlZW5TaGFyZURhdGEsIHNldE9ubG9hZFNjcmVlblNoYXJlRGF0YV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY2hhdE1lc3NhZ2UsIHNldENoYXRNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjaGF0U2VuZGVyLCBzZXRDaGF0U2VuZGVyXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjdXJyZW50VXNlckZ1bGxOYW1lLCBzZXRDdXJyZW50VXNlckZ1bGxOYW1lXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtldmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFttZWV0aW5nQ2hhdCwgc2V0TWVldGluZ0NoYXRdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NjcmVlblNoYXJlZCwgc2V0U2NyZWVuU2hhcmVkXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzdGFydFNjcmVlblNoYXJpbmcsIHNldFN0YXJ0U2NyZWVuU2hhcmluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JhaXNlZEhhbmRzLCBzZXRSYWlzZWRIYW5kc10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW21pbnV0ZXNTaG93biwgc2V0TWludXRlc1Nob3duXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc3RhcnRTaG93aW5nTWludXRlcywgc2V0U3RhcnRTaG93aW5nTWludXRlc10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdmNSb29tV29ya3NwYWNlUmVmID0gdXNlUmVmKCk7XG5cbiAgICAvLyBMYXlvdXQgcmVzcG9uZHMgdG8gdGhlIHJvb20ncyBvd24gd2lkdGggKGl0IGxpdmVzIGluc2lkZSBXaW5kb3dWaWV3UG9ydCxcbiAgICAvLyBzbyB2aWV3cG9ydCBicmVha3BvaW50cyBhcmUgd3JvbmcpLiBCZWxvdyB0aGlzIHRoZSBzaWRlYmFyIG92ZXJsYXlzIHRoZVxuICAgIC8vIHdvcmtzcGFjZSBpbnN0ZWFkIG9mIGRvY2tpbmcgYmVzaWRlIGl0ICh3aGljaCBzcXVhc2hlZCB0aGUgdmlkZW8pLlxuICAgIGNvbnN0IFtyb290UmVmLCByb290V2lkdGhdID0gdXNlQ29udGFpbmVyV2lkdGgoKTtcbiAgICBjb25zdCBuYXJyb3dMYXlvdXQgPSByb290V2lkdGggPiAwICYmIHJvb3RXaWR0aCA8IDY4MDtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYWRDaGF0cyAoKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0xPQURJTkcgQ0hBVFMnKTtcbiAgICAgICAgICAgICAgICBmZXRjaENoYXRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWVldGluZy1yb29tLScgKyBwcm9wcy5jYWxlbmRhckV2ZW50LmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBwYXJ0aWNpcGFudHMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRpY2lwYW50cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjogKGV2ZW50VHlwZSwgYmUpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlJFUVVFU1RfVE9fSk9JTl9NRUVUSU5HOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRVc2VyKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuVVNFUl9MRUZUX01FRVRJTkc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVVc2VyKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1Q6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTb2NrZXQgZHJvcHBlZCDigJQgdGVsbCB0aGUgdXNlci4gVGhlIHJvc3RlciBpcyByZWNvbmNpbGVkIG9uIHJlY29ubmVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2luZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlY29ubmVjdGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNPQ0tFVF9DT05ORUNUOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhY3Qgb24gYSBSRS1jb25uZWN0IChpbml0aWFsIGNvbm5lY3QgaXMgaGFuZGxlZCBieSB0aGUgam9pbiBlZmZlY3QpLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvaW5lZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVjb25uZWN0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN5bmNSb3N0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlBFRVJfRElTQ09OTkVDVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgcGVlci1sZXZlbCBkaXNjb25uZWN0IHNpZ25hbCDigJQgcmVjb25jaWxlIHRoZSByb3N0ZXIgZnJvbSB0aGUgc2VydmVyIHRydXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0cnVzdGluZyB3ZSBnb3QgZXZlcnkgVVNFUl9MRUZUIGRlbHRhLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzeW5jUm9zdGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DUkVBVEVfVFJBTlNQT1JUX0ZBSUxFRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlY29ubmVjdEVycm9yKCdBIGNvbm5lY3Rpb24gcHJvYmxlbSBvY2N1cnJlZC4gUGxlYXNlIHJlam9pbiB0aGUgbWVldGluZy4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VEOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKGJlPy5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvblJhaXNlSGFuZChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkxvd2VySGFuZChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkVORF9TRVNTSU9OOlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZ1VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TSEFSSU5HX1NUT1BQRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTY3JlZW5TaGFyZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVzc2FnZShiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5nVXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb25uZWN0aW9uIGVycm9yIC0gUGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uIGFuZCByZS1qb2luIHRoZSBtZWV0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fQUxFUlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWNvbm5lY3RFcnJvcihiZS5wYXlsb2FkICYmIGJlLnBheWxvYWQubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYmUucGF5bG9hZC5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnQSBjb25uZWN0aW9uIHByb2JsZW0gb2NjdXJyZWQuIFBsZWFzZSByZWpvaW4gdGhlIG1lZXRpbmcuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmKHNpZGVCYXJUYWIgIT09ICdDaGF0Jykge1xuICAgICAgICAgICAgbGV0IGNoYXRNZXNzYWdlID0gbWVzc2FnZS5jaGF0TWVzc2FnZTtcbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSAhPT0gY2hhdE1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVNZXNzYWdlQXJyaXZlZCh7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUgKyBcIiBcIiArIGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICsgKGNoYXRNZXNzYWdlLmNvbnRlbnQgJiYgY2hhdE1lc3NhZ2UuY29udGVudC50cmltKCkubGVuZ3RoID4gMCA/IFwiIC0gXCIgKyBjaGF0TWVzc2FnZS5jb250ZW50IDogJycpXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzZXRIYXNVbnJlYWRDaGF0cyh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9uUmFpc2VIYW5kID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgcmFpc2VkSGFuZHMucHVzaChwYXlsb2FkLnVzZXJJZCk7XG4gICAgICAgIHNldFJhaXNlZEhhbmRzKFtdLmNvbmNhdChyYWlzZWRIYW5kcykpO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkxvd2VySGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChyYWlzZWRIYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSByYWlzZWRIYW5kcy5maW5kSW5kZXgoKHApID0+IHAgPT09IHBheWxvYWQudXNlcklkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgcmFpc2VkSGFuZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFJhaXNlZEhhbmRzKFtdLmNvbmNhdChyYWlzZWRIYW5kcykpO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobWVldGluZ0NoYXQpIHtcbiAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ0NoYXQnKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICAgICAgc2V0SGFzVW5yZWFkQ2hhdHMoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSwgW21lZXRpbmdDaGF0XSk7XG5cbiAgICBjb25zdCBmZXRjaENoYXRzID0gKCkgPT4ge1xuICAgICAgICBzZW5kUmVxdWVzdChgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9mZXRjaE1lZXRpbmdDaGF0LyR7cHJvcHMuY2FsZW5kYXJFdmVudC5pZH1gLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGRVRDSCBDSEFUIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlkKSB7XG4gICAgICAgICAgICAgICAgc2V0TWVldGluZ0NoYXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgIH0sIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25BVlNldHRpbmdzQ2hhbmdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYocGF5bG9hZCkge1xuICAgICAgICAgICAgLy8gSW1tdXRhYmxlIHVwZGF0ZTogcHJvZHVjZSBhIE5FVyBwYXJ0aWNpcGFudCBvYmplY3Qgc28gdGhlIHRpbGUgcmUtcmVuZGVycyB3aXRoIHRoZVxuICAgICAgICAgICAgLy8gZnJlc2ggbXV0ZSBzdGF0ZSAoaW4tcGxhY2UgbXV0YXRpb24gY291bGQgYmUgbWlzc2VkIG9uIGEgZ3JpZCByZXNodWZmbGUvcmVtb3VudCkuXG4gICAgICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHByZXYubWFwKChwKSA9PlxuICAgICAgICAgICAgICAgIHAudXNlcklkID09PSBwYXlsb2FkLnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICA/IHsuLi5wLCBhdWRpb011dGVkOiBwYXlsb2FkLmF1ZGlvTXV0ZWQsIHZpZGVvTXV0ZWQ6IHBheWxvYWQudmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgOiBwKSk7XG5cbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLmZpcmVFdmVudChWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCwgcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZW1pdEFWU2V0dGluZ3NDaGFuZ2UoKSB7XG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VELCB7XG4gICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgYXVkaW9NdXRlZDogYXVkaW9NdXRlZCxcbiAgICAgICAgICAgIHZpZGVvTXV0ZWQ6IHZpZGVvTXV0ZWRcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChhdWRpb011dGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBvbkFWU2V0dGluZ3NDaGFuZ2Uoe1xuICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgdmlkZW9NdXRlZCxcbiAgICAgICAgICAgICAgICBhdWRpb011dGVkXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZW1pdEFWU2V0dGluZ3NDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH0sIFthdWRpb011dGVkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodmlkZW9NdXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9LCBbdmlkZW9NdXRlZF0pO1xuXG4gICAgY29uc3QgaGFuZGxlTWVzc2FnZUFycml2ZWQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5TRVNTSU9OICYmIGV2ZW50Lm1lc3NhZ2UgJiYgZXZlbnQubWVzc2FnZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRBY3Rpdml0eU1lc3NhZ2UoZXZlbnQubWVzc2FnZSk7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2aXR5TWVzc2FnZShudWxsKTtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobWVzc2FnZVRpbWVvdXQpO1xuICAgICAgICAgICAgfSwgNDAwMCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgYWRkVXNlciA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBREQgVVNFUiA6ICcsIHBheWxvYWQpO1xuICAgICAgICBhZGRVc2VyVG9QYXJ0aWNpcGFudHMocGF5bG9hZC51c2VyKTtcbiAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQoZmFsc2UpO1xuICAgICAgICBpZiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLkxPQkJZKSB7XG4gICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5TRVNTSU9OKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ1Blb3BsZScpO1xuICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVNZXNzYWdlQXJyaXZlZCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBwYXlsb2FkLnVzZXIubmFtZSArICcgaGFzIGpvaW5lZCdcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZVVzZXIgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuY2FsZW5kYXJFdmVudC5pZCA9PT0gcGF5bG9hZC5tZWV0aW5nSWQpIHtcbiAgICAgICAgICAgIC8vIEltbXV0YWJsZSBmdW5jdGlvbmFsIHVwZGF0ZSBzbyBjb25jdXJyZW50IGRlbHRhcyBjYW4ndCBjbG9iYmVyIGVhY2ggb3RoZXIgKGxvc3QtdXBkYXRlXG4gICAgICAgICAgICAvLyByYWNlKS4gVGhlIFwiZXZlcnlvbmUgbGVmdCDihpIgTE9CQllcIiB0cmFuc2l0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIHBhcnRpY2lwYW50cyBlZmZlY3QgYmVsb3cuXG4gICAgICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHByZXYuZmlsdGVyKChwKSA9PiBwLnVzZXJJZCAhPT0gcGF5bG9hZC51c2VySWQpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBSZWNvbmNpbGUgdGhlIHBhcnRpY2lwYW50IGxpc3QgV0hPTEVTQUxFIGZyb20gdGhlIHNlcnZlcidzIGF1dGhvcml0YXRpdmUgcm9zdGVyLiBUaGlzIGlzIHRoZVxuICAgIC8vIHJlY29uY2lsaWF0aW9uIHBhdGggdGhhdCB3YXMgZW50aXJlbHkgbWlzc2luZzogaW5jcmVtZW50YWwgVVNFUl9KT0lORUQvVVNFUl9MRUZUIGRlbHRhcyBhbG9uZVxuICAgIC8vIHBlcm1hbmVudGx5IGRlc3luYyBhIGNsaWVudCB0aGF0IGRyb3BzIG9uZS4gRHJpdmVuIGJ5IHRoZSBQaGFzZS1DIEFMTF9VU0VSUyBzZXJ2ZXIgaGFuZGxlci5cbiAgICBjb25zdCByZWNvbmNpbGVQYXJ0aWNpcGFudHMgPSAodXNlcnMpID0+IHtcbiAgICAgICAgY29uc3QgbGlzdCA9ICh1c2VycyB8fCBbXSkubWFwKCh1KSA9PiAoe1xuICAgICAgICAgICAgdXNlcklkOiB1LnVzZXJJZCxcbiAgICAgICAgICAgIG5hbWU6IHUubmFtZSxcbiAgICAgICAgICAgIGF2YXRhcjogdS5hdmF0YXIsXG4gICAgICAgICAgICBhdWRpb011dGVkOiB1LmF1ZGlvTXV0ZWQsXG4gICAgICAgICAgICB2aWRlb011dGVkOiB1LnZpZGVvTXV0ZWQsXG4gICAgICAgICAgICBwcm9kdWNlcnM6IHUucHJvZHVjZXJzXG4gICAgICAgIH0pKTtcblxuICAgICAgICBzZXRQYXJ0aWNpcGFudHMobGlzdCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3luY1Jvc3RlciA9ICgpID0+IHtcbiAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuQUxMX1VTRVJTLCB7XG4gICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdST1NURVIgUkVTWU5DIDonLCByZXNwb25zZS5kYXRhLnVzZXJzSW5Sb29tKTtcbiAgICAgICAgICAgICAgICByZWNvbmNpbGVQYXJ0aWNpcGFudHMocmVzcG9uc2UuZGF0YS51c2Vyc0luUm9vbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUm9zdGVyIHJlc3luYyBmYWlsZWQnLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIFNpbmdsZSBvd25lciBvZiB0aGUgXCJhbGwgcGFydGljaXBhbnRzIGxlZnRcIiAvIHJvb20tc3RhdHVzIHRyYW5zaXRpb24sIGRlcml2ZWQgZnJvbSB0aGUgbGlzdFxuICAgIC8vICh3b3JrcyBubyBtYXR0ZXIgd2hpY2ggcGF0aCBtdXRhdGVkIHBhcnRpY2lwYW50czogZGVsdGEsIHJlY29uY2lsZSwgb3IgaW5pdGlhbCBqb2luKS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gJiYgcGFydGljaXBhbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQodHJ1ZSk7XG4gICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5MT0JCWSk7XG4gICAgICAgIH0gZWxzZSBpZiAocGFydGljaXBhbnRzLmxlbmd0aCA+IDAgJiYgYWxsVXNlclBhcnRpY2lwYW50c0xlZnQpIHtcbiAgICAgICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sIFtwYXJ0aWNpcGFudHNdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNpZGViYXJUb2dnbGUgPSAoZSkgPT4ge1xuICAgICAgICBsZXQgcGFwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVldGluZ0RpYWxvZ1BhcGVyJyk7XG4gICAgICAgIGlmIChlLmRldGFpbC5vcGVuKSB7XG4gICAgICAgICAgICBwYXBlci5zdHlsZS5tYXJnaW4gPSAnNTRweCAwIDAgMTM2cHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFwZXIuc3R5bGUubWFyZ2luID0gJzU0cHggMCAwIDAnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlci5hcGkgPSBoYW5kbGVyKCk7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zZXR0aW5ncykge1xuICAgICAgICAgICAgc2V0QXVkaW9NdXRlZCghcHJvcHMuc2V0dGluZ3MuYXVkaW9Pbik7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKCFwcm9wcy5zZXR0aW5ncy52aWRlb09uKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5zZXR0aW5nc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZFJhaXNlZCkpIHtcbiAgICAgICAgICAgIGlmIChoYW5kUmFpc2VkKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuUkFJU0VfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuTE9XRVJfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH0sIFtoYW5kUmFpc2VkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgICAgaGFuZGxlcjoge1xuICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0cmFpbmluZy1yb29tJztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uQ29udGV4dENoYW5nZTogKGNvbnRleHQsIG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobmV3VmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKGtleSkgPT4ga2V5ID09PSAnd2luZG93RGlzcGxheVN0YXRlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShuZXdWYWx1ZXMud2luZG93RGlzcGxheVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChpbml0aWFsQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShpbml0aWFsQ29udGV4dCA/IGluaXRpYWxDb250ZXh0LndpbmRvd0Rpc3BsYXlTdGF0ZSA6ICdNQVhJTUlaRUQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyLCBWQ0V2ZW50VHlwZS5SRVFVRVNUX1RPX0pPSU5fTUVFVElORywgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQsIFZDRXZlbnRUeXBlLlVTRVJfTEVGVF9NRUVUSU5HLFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCBWQ0V2ZW50VHlwZS5TT0NLRVRfQ09OTkVDVCwgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQsIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQsXG4gICAgICAgICAgICBWQ0V2ZW50VHlwZS5QRUVSX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQsIFZDRXZlbnRUeXBlLkNSRUFURV9UUkFOU1BPUlRfRkFJTEVELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVELCBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTiwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCxcbiAgICAgICAgICAgIFZDRXZlbnRUeXBlLlNZU1RFTV9BTEVSVCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIucmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucygndHJhaW5pbmctcm9vbScpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG5cbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaGFzQWN0aXZlTWVldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5sZWF2ZU1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIGxldCB1c2VyRnVsbE5hbWU7XG5cbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gR3VhcmQ6IHRoZSBjdXJyZW50IHVzZXIgbWF5IG5vdCBiZSBpbiBhdHRlbmRlZXMgKGRhdGEgZHJpZnQpIOKAlCBkb24ndCBjcmFzaDtcbiAgICAgICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgdXNlcm5hbWUgc28gY3VycmVudFVzZXJGdWxsTmFtZSBzdGF5cyB0cnV0aHkgKGdhdGVzIHRoZSByb29tIHJlbmRlcikuXG4gICAgICAgICAgICBjb25zdCBtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuYXR0ZW5kZWVzLmZpbmQoKGEpID0+IGEudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IG1lID8gbWUubmFtZSA6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q3VycmVudFVzZXJGdWxsTmFtZSh1c2VyRnVsbE5hbWUpO1xuICAgICAgICBzZXRJc0hvc3QocHJvcHMuY2FsZW5kYXJFdmVudC5ob3N0LnVzZXJuYW1lID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG4gICAgICAgIHNldElzQ2hhaXJQZXJzb24ocHJvcHMuY2FsZW5kYXJFdmVudC5jaGFpclBlcnNvbklkID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1lZGlhLmpvaW5NZWV0aW5nKHByb3BzLmNhbGVuZGFyRXZlbnQsIHByb3BzLnNldHRpbmdzLCB1c2VyRnVsbE5hbWUpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdKT0lOIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICBqb2luZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBhcnRpY2lwYW50cyhyZXNwb25zZS5wYXJ0aWNpcGFudHMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSdHBDYXBhYmlsaXRpZXMocmVzcG9uc2UucnRwQ2FwYWJpbGl0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhKHJlc3BvbnNlLnNoYXJlU2NyZWVuUHJvZHVjZXJEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVyaXZlIGZyb20gdGhlIEFDSydzIHJvc3Rlciwgbm90IHRoZSBzdGlsbC1lbXB0eSBgcGFydGljaXBhbnRzYCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhyZXNwb25zZS5wYXJ0aWNpcGFudHMgJiYgcmVzcG9uc2UucGFydGljaXBhbnRzLmxlbmd0aCA+IDAgPyBTdGF0dXMuU0VTU0lPTiA6IFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShudWxsKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRVc2VyVG9QYXJ0aWNpcGFudHModXNlcikge1xuICAgICAgICAvLyBJbW11dGFibGUsIGRlZHVwLWJ5LXVzZXJJZCBmdW5jdGlvbmFsIHVwZGF0ZS4gTmV2ZXIgbXV0YXRlIGluIHBsYWNlICsgY29uY2F0ICh0aGF0IHJhY2VzXG4gICAgICAgIC8vIHdpdGggY29uY3VycmVudCBkZWx0YXMgYW5kIGxvc2VzIHVwZGF0ZXMpLiBVcGRhdGUtaW4tcGxhY2UtYnkta2V5IGlmIHByZXNlbnQsIGVsc2UgYXBwZW5kLlxuICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2LmZpbmQoKHUpID0+IHUudXNlcklkID09PSB1c2VyLnVzZXJJZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5tYXAoKHApID0+IHAudXNlcklkID09PSB1c2VyLnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdmF0YXI6IHVzZXIuYXZhdGFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9NdXRlZDogdXNlci5hdWRpb011dGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZDogdXNlci52aWRlb011dGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXJzOiB1c2VyLnByb2R1Y2Vyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwge1xuICAgICAgICAgICAgICAgIHVzZXJJZDogdXNlci51c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlci5uYW1lLFxuICAgICAgICAgICAgICAgIGF2YXRhcjogdXNlci5hdmF0YXIsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZDogdXNlci5hdWRpb011dGVkLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQ6IHVzZXIudmlkZW9NdXRlZCxcbiAgICAgICAgICAgICAgICBwcm9kdWNlcnM6IHVzZXIucHJvZHVjZXJzXG4gICAgICAgICAgICB9XTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MgPSAodXNlcklkLCBhdWRpb011dGVkLCB2aWRlb011dGVkKSA9PiB7XG5cbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlUGFydGljaXBhbnRzID0gKHVzZXJzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBTEwgVVNFUlMgcmVjZWl2ZWQgYW5kIGNyZWF0aW5nIHBhcnRpY2lwYW50cyA6ICcsIHVzZXJzKTtcbiAgICAgICAgLy8gSW5pdGlhbCByb3N0ZXIgZnJvbSB0aGUgSk9JTiBhY2sg4oCUIHNldCBpdCB3aG9sZXNhbGUgKHNhbWUgc2hhcGUgYXMgcmVjb25jaWxlKS5cbiAgICAgICAgcmVjb25jaWxlUGFydGljaXBhbnRzKHVzZXJzKTtcblxuICAgICAgICBpZiAodXNlcnMgJiYgdXNlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZ1VwID0gKCkgPT4ge1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmxlYXZlTWVldGluZyhwcm9wcy5jYWxlbmRhckV2ZW50LmlkKTtcbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIucmVtb3ZlTG9hZGVkR3JhcGgoJ3dpbmRvdycpO1xuICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgIHNldFNpZGVCYXJUYWIoJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBlbmRTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbkNvbmZpcm1EaWFsb2coXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZW5kIHRoZSBjdXJyZW50IHNlc3Npb24/XCIsIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVuZFNlc3Npb24ocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZW1vdmVMb2FkZWRHcmFwaCgnd2luZG93Jyk7XG4gICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW1pdFN5c3RlbUV2ZW50ID0gKGV2ZW50VHlwZSwgZGF0YSwgdG9QYXJ0aWNpcGFudElkcyA9IG51bGwpID0+IHtcbiAgICAgICAgbGV0IHBhcnRpY2lwYW50SWRzID0gW107XG4gICAgICAgIGlmICghdG9QYXJ0aWNpcGFudElkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudCBvZiBwYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFydGljaXBhbnQudXNlcklkICE9PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudElkcy5wdXNoKHBhcnRpY2lwYW50LnVzZXJJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydGljaXBhbnRJZHMgPSBwYXJ0aWNpcGFudElkcy5jb25jYXQodG9QYXJ0aWNpcGFudElkcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQsIHtcbiAgICAgICAgICAgIHN5c3RlbUV2ZW50VHlwZTogZXZlbnRUeXBlLFxuICAgICAgICAgICAgcmVjaXBpZW50czogcGFydGljaXBhbnRJZHMsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVjb3JkTWVldGluZyA9ICgpID0+IHtcbiAgICAgICAgbWVkaWFSZWNvcmRlci5pbml0KHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsIHByb3BzLmNhbGVuZGFyRXZlbnQudGl0bGUpO1xuICAgICAgICBzZXRJc1JlY29yZGluZyh0cnVlKTtcbiAgICAgICAgZW1pdFN5c3RlbUV2ZW50KCdNRUVUSU5HX1JFQ09SRElORycsIHtcbiAgICAgICAgICAgIHJlY29yZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVkaWFSZWNvcmRlci5yZWNvcmRNZWV0aW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN0b3BSZWNvcmRpbmdNZWV0aW5nID0gKHB1Ymxpc2ggPSB0cnVlKSA9PiB7XG4gICAgICAgIHNldElzUmVjb3JkaW5nKGZhbHNlKTtcblxuICAgICAgICBpZiAocHVibGlzaCkge1xuICAgICAgICAgICAgZW1pdFN5c3RlbUV2ZW50KCdNRUVUSU5HX1JFQ09SRElORycsIHtcbiAgICAgICAgICAgICAgICByZWNvcmRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbWVkaWFSZWNvcmRlci5zdG9wUmVjb3JkaW5nTWVldGluZygpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IGZsZXgtbm93cmFwIG5vLW1hcmdpbiBuby1wYWRkaW5nIHctMTAwIGgtMTAwJ30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfSBzdHlsZT17e21pbldpZHRoOiAnMjgwcHgnfX0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nIHctMTAwIGgtMTAwJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICc4MHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhciBldmVudEhhbmRsZXI9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NdXRlVmlkZW86IChtdXRlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmlkZW9NdXRlZChtdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTXV0ZUF1ZGlvOiAobXV0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF1ZGlvTXV0ZWQobXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRDYWxsOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5nVXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kU2Vzc2lvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kU2Vzc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hhdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hDaGF0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGVvcGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVNjcmVlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wU2hhcmVTY3JlZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWludXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZU1pbnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU1pbnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2Y1Jvb21Xb3Jrc3BhY2VSZWYuY3VycmVudCAmJiB2Y1Jvb21Xb3Jrc3BhY2VSZWYuY3VycmVudC5zYXZlTWludXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjUm9vbVdvcmtzcGFjZVJlZi5jdXJyZW50LnNhdmVNaW51dGVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZE1lZXRpbmc6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZE1lZXRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFJlY29yZGluZzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFJlY29yZGluZ01lZXRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VIYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIYW5kUmFpc2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dlckhhbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhhbmRSYWlzZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNVbnJlYWRDaGF0cz17aGFzVW5yZWFkQ2hhdHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzPXtwYXJ0aWNpcGFudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZFJhaXNlZD17aGFuZFJhaXNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0Rpc2FibGVkPXt2aWRlb0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGlzYWJsZWQ9e2F1ZGlvRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZD17dmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb011dGVkPXthdWRpb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGF0ZT17ZGlzcGxheVN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlblNoYXJlZD17c2NyZWVuU2hhcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNTaG93bj17bWludXRlc1Nob3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXM9e3Jvb21TdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtwcm9wcy5jYWxlbmRhckV2ZW50Lmhvc3QudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QZXJtaXQ9eyFwcm9wcy5jYWxlbmRhckV2ZW50Lmhvc3QuYXNrVG9Kb2lufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbWVvbmVTaGFyaW5nPXtzb21lb25lU2hhcmluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlY29yZGluZz17aXNSZWNvcmRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VkSGFuZHM9e3JhaXNlZEhhbmRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXVkaW9EZXZpY2VDb25uZWN0ZWQ9e3Byb3BzLnNldHRpbmdzLmlzQXVkaW9EZXZpY2VDb25uZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWRlb0RldmljZUNvbm5lY3RlZD17cHJvcHMuc2V0dGluZ3MuaXNWaWRlb0RldmljZUNvbm5lY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXMgPT09IFN0YXR1cy5TWVNURU1fRVJST1IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzNSwgNjMsIDMzKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICczMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7U1lTVEVNX0VSUk9SX01FU1NBR0V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLkNPTk5FQ1RJT05fRVJST1IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzNSwgNjMsIDMzKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICczMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1NZU1RFTV9FUlJPUl9NRVNTQUdFfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBDYXBhYmlsaXRpZXMgJiYgcGFydGljaXBhbnRzICYmIGN1cnJlbnRVc2VyRnVsbE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gfHwgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLkxPQkJZKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWQ1Jvb21Xb3Jrc3BhY2UgcmVmPXt2Y1Jvb21Xb3Jrc3BhY2VSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9e21lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb011dGVkPXthdWRpb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZD17dmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUaXRsZT17cHJvcHMuY2FsZW5kYXJFdmVudC50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtwcm9wcy5jYWxlbmRhckV2ZW50LmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNEb2N1bWVudElkPXtwcm9wcy5jYWxlbmRhckV2ZW50Lm1pbnV0ZXNEb2N1bWVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0lkPXtwcm9wcy5jYWxlbmRhckV2ZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFVzZXJGdWxsTmFtZT17Y3VycmVudFVzZXJGdWxsTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uR3JpZFNldHVwPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlQmFyVGFiPXtzaWRlQmFyVGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cz17cm9vbVN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9zdD17aXNIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17aXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U2NyZWVuU2hhcmluZz17c3RhcnRTY3JlZW5TaGFyaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmluZ0hhbmRsZXI9eyhzb21lb25lU2hhcmluZykgPT4gc2V0U29tZW9uZVNoYXJpbmcoc29tZW9uZVNoYXJpbmcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdG9wU2hhcmluZz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0YXJ0U2hhcmluZz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTaG93aW5nTWludXRlcz17c3RhcnRTaG93aW5nTWludXRlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhcnRTaG93aW5nTWludXRlcz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0b3BTaG93aW5nTWludXRlcz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlc1Nob3duPXttaW51dGVzU2hvd259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUGVybWl0PXthdXRvUGVybWl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwQ2FwYWJpbGl0aWVzPXtydHBDYXBhYmlsaXRpZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaGFyZWQ9e3NjcmVlblNoYXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGF0ZT17ZGlzcGxheVN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25sb2FkU2NyZWVuU2hhcmVEYXRhPXtvbmxvYWRTY3JlZW5TaGFyZURhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxVc2VyUGFydGljaXBhbnRzTGVmdD17YWxsVXNlclBhcnRpY2lwYW50c0xlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkF1ZGlvRGV2aWNlQ2hhbmdlPXsoZGV2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXVkaW9EaXNhYmxlZChVdGlscy5pc051bGwoZGV2aWNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0QXVkaW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHRydWUsIHBhcnRpY2lwYW50LnZpZGVvTXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG9zdFZpZGVvTXV0ZT17KHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MocGFydGljaXBhbnQudXNlcklkLCBwYXJ0aWNpcGFudC5hdWRpb011dGVkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzaWRlQmFyT3BlbiAmJiBzaWRlQmFyVGFiICYmIHJvb21TdGF0dXMgPT09IFN0YXR1cy5TRVNTSU9OICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtuYXJyb3dMYXlvdXQgPyAnY2xvc2FibGUtcGFuZWwtb3ZlcmxheScgOiAnY2xvc2FibGUtcGFuZWwtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2FibGVQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlSGFuZGxlcj17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyVGFiKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3NpZGVCYXJUYWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNpZGVCYXJDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdDaGF0PXttZWV0aW5nQ2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtpc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e2lzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYj17c2lkZUJhclRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0lkPXtwcm9wcy5jYWxlbmRhckV2ZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0QXVkaW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgdHJ1ZSwgcGFydGljaXBhbnQudmlkZW9NdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG9zdFZpZGVvTXV0ZT17KHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Nsb3NhYmxlUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnNDhweCcsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnNDhweCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnd2FybmluZyd9XG4gICAgICAgICAgICAgICAgICAgIHNob3c9e3JlY29ubmVjdGluZ31cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e21hcmdpbjogMH19PlJlY29ubmVjdGluZ+KApjwvcD5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgc2hvdz17cmVjb25uZWN0RXJyb3IgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGRpc21pc3NpYmxlXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFJlY29ubmVjdEVycm9yKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7bWFyZ2luOiAwfX0+e3JlY29ubmVjdEVycm9yfTwvcD5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnaW5mbyd9XG4gICAgICAgICAgICAgICAgICAgIHNob3c9e2FjdGl2aXR5TWVzc2FnZSAhPT0gbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PnthY3Rpdml0eU1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydpbmZvJ31cbiAgICAgICAgICAgICAgICAgICAgc2hvdz17Y2hhdE1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkIHdoaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206ICc4cHgnXG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydDSEFUX0JVQkJMRSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PntjaGF0U2VuZGVyfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3ttYXJnaW5Ub3A6ICc4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PjxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2NoYXRNZXNzYWdlfTwvcD48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHsvKkhpZGRlbiB2aWRlbyB0byBjYXB0dXJlIHJlY29yZGluZ3MqL31cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0+XG4gICAgICAgICAgICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPXtmYWxzZX0gbXV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlzSW5saW5lIGF1dG9QbGF5IHJlZj17cmVjb3JkUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcyMDBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICApXG4gICAgICAgIDtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgVHJhaW5pbmdSb29tO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLG1CQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUsZUFBQSxHQUFBUixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVcsY0FBQSxHQUFBVCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVksY0FBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWEsZUFBQSxHQUFBWCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWMsa0JBQUEsR0FBQVosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFlLGVBQUEsR0FBQWIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFnQixVQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLE1BQUEsR0FBQWYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFrQixXQUFBLEdBQUFoQixzQkFBQSxDQUFBRixPQUFBO0FBQWtELFNBQUFFLHVCQUFBaUIsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFwQix3QkFBQW9CLENBQUEsRUFBQUcsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUF4Qix1QkFBQSxZQUFBQSxDQUFBb0IsQ0FBQSxFQUFBRyxDQUFBLFNBQUFBLENBQUEsSUFBQUgsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxNQUFBTyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFSLE9BQUEsRUFBQUYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUyxDQUFBLE1BQUFGLENBQUEsR0FBQUosQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUUsQ0FBQSxDQUFBSSxHQUFBLENBQUFYLENBQUEsVUFBQU8sQ0FBQSxDQUFBSyxHQUFBLENBQUFaLENBQUEsR0FBQU8sQ0FBQSxDQUFBTSxHQUFBLENBQUFiLENBQUEsRUFBQVMsQ0FBQSxnQkFBQU4sQ0FBQSxJQUFBSCxDQUFBLGdCQUFBRyxDQUFBLE9BQUFXLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixDQUFBLEVBQUFHLENBQUEsT0FBQUssQ0FBQSxJQUFBRCxDQUFBLEdBQUFTLE1BQUEsQ0FBQUMsY0FBQSxLQUFBRCxNQUFBLENBQUFFLHdCQUFBLENBQUFsQixDQUFBLEVBQUFHLENBQUEsT0FBQUssQ0FBQSxDQUFBSSxHQUFBLElBQUFKLENBQUEsQ0FBQUssR0FBQSxJQUFBTixDQUFBLENBQUFFLENBQUEsRUFBQU4sQ0FBQSxFQUFBSyxDQUFBLElBQUFDLENBQUEsQ0FBQU4sQ0FBQSxJQUFBSCxDQUFBLENBQUFHLENBQUEsV0FBQU0sQ0FBQSxLQUFBVCxDQUFBLEVBQUFHLENBQUE7QUFBQSxTQUFBZ0IsUUFBQW5CLENBQUEsRUFBQUssQ0FBQSxRQUFBRixDQUFBLEdBQUFhLE1BQUEsQ0FBQUksSUFBQSxDQUFBcEIsQ0FBQSxPQUFBZ0IsTUFBQSxDQUFBSyxxQkFBQSxRQUFBZCxDQUFBLEdBQUFTLE1BQUEsQ0FBQUsscUJBQUEsQ0FBQXJCLENBQUEsR0FBQUssQ0FBQSxLQUFBRSxDQUFBLEdBQUFBLENBQUEsQ0FBQWUsTUFBQSxXQUFBakIsQ0FBQSxXQUFBVyxNQUFBLENBQUFFLHdCQUFBLENBQUFsQixDQUFBLEVBQUFLLENBQUEsRUFBQWtCLFVBQUEsT0FBQXBCLENBQUEsQ0FBQXFCLElBQUEsQ0FBQUMsS0FBQSxDQUFBdEIsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBdUIsY0FBQTFCLENBQUEsYUFBQUssQ0FBQSxNQUFBQSxDQUFBLEdBQUFzQixTQUFBLENBQUFDLE1BQUEsRUFBQXZCLENBQUEsVUFBQUYsQ0FBQSxXQUFBd0IsU0FBQSxDQUFBdEIsQ0FBQSxJQUFBc0IsU0FBQSxDQUFBdEIsQ0FBQSxRQUFBQSxDQUFBLE9BQUFjLE9BQUEsQ0FBQUgsTUFBQSxDQUFBYixDQUFBLE9BQUEwQixPQUFBLFdBQUF4QixDQUFBLElBQUF5QixlQUFBLENBQUE5QixDQUFBLEVBQUFLLENBQUEsRUFBQUYsQ0FBQSxDQUFBRSxDQUFBLFNBQUFXLE1BQUEsQ0FBQWUseUJBQUEsR0FBQWYsTUFBQSxDQUFBZ0IsZ0JBQUEsQ0FBQWhDLENBQUEsRUFBQWdCLE1BQUEsQ0FBQWUseUJBQUEsQ0FBQTVCLENBQUEsS0FBQWdCLE9BQUEsQ0FBQUgsTUFBQSxDQUFBYixDQUFBLEdBQUEwQixPQUFBLFdBQUF4QixDQUFBLElBQUFXLE1BQUEsQ0FBQUMsY0FBQSxDQUFBakIsQ0FBQSxFQUFBSyxDQUFBLEVBQUFXLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsQ0FBQSxFQUFBRSxDQUFBLGlCQUFBTCxDQUFBO0FBQUEsU0FBQThCLGdCQUFBOUIsQ0FBQSxFQUFBSyxDQUFBLEVBQUFGLENBQUEsWUFBQUUsQ0FBQSxHQUFBNEIsY0FBQSxDQUFBNUIsQ0FBQSxNQUFBTCxDQUFBLEdBQUFnQixNQUFBLENBQUFDLGNBQUEsQ0FBQWpCLENBQUEsRUFBQUssQ0FBQSxJQUFBNkIsS0FBQSxFQUFBL0IsQ0FBQSxFQUFBb0IsVUFBQSxNQUFBWSxZQUFBLE1BQUFDLFFBQUEsVUFBQXBDLENBQUEsQ0FBQUssQ0FBQSxJQUFBRixDQUFBLEVBQUFILENBQUE7QUFBQSxTQUFBaUMsZUFBQTlCLENBQUEsUUFBQUssQ0FBQSxHQUFBNkIsWUFBQSxDQUFBbEMsQ0FBQSx1Q0FBQUssQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBNkIsYUFBQWxDLENBQUEsRUFBQUUsQ0FBQSwyQkFBQUYsQ0FBQSxLQUFBQSxDQUFBLFNBQUFBLENBQUEsTUFBQUgsQ0FBQSxHQUFBRyxDQUFBLENBQUFtQyxNQUFBLENBQUFDLFdBQUEsa0JBQUF2QyxDQUFBLFFBQUFRLENBQUEsR0FBQVIsQ0FBQSxDQUFBZSxJQUFBLENBQUFaLENBQUEsRUFBQUUsQ0FBQSx1Q0FBQUcsQ0FBQSxTQUFBQSxDQUFBLFlBQUFnQyxTQUFBLHlFQUFBbkMsQ0FBQSxHQUFBb0MsTUFBQSxHQUFBQyxNQUFBLEVBQUF2QyxDQUFBO0FBRWxELE1BQU13QyxNQUFNLEdBQUc7RUFDWEMsS0FBSyxFQUFFLE9BQU87RUFDZEMsT0FBTyxFQUFFLFNBQVM7RUFDbEJDLGFBQWEsRUFBRSxlQUFlO0VBQzlCQyxZQUFZLEVBQUUsY0FBYztFQUM1QkMsZ0JBQWdCLEVBQUUsa0JBQWtCO0VBQ3BDQyxZQUFZLEVBQUU7QUFDbEIsQ0FBQztBQUVELE1BQU1DLFFBQVEsR0FBR0MsTUFBTSxDQUFDRCxRQUFRLENBQUNFLFFBQVEsR0FBRyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRyxRQUFRO0FBQzNFLE1BQU1DLFlBQVksZ0JBQUdDLGNBQUssQ0FBQ0MsSUFBSSxjQUFDRCxjQUFLLENBQUNFLFVBQVUsQ0FBQyxDQUFDQyxLQUFLLEVBQUVDLEdBQUcsS0FBSztFQUU3RCxNQUFNQyxTQUFTLEdBQUcsSUFBQUMsYUFBTSxFQUFDLENBQUM7RUFDMUI7RUFDQTtFQUNBLE1BQU1DLFNBQVMsR0FBRyxJQUFBRCxhQUFNLEVBQUMsS0FBSyxDQUFDO0VBQy9CLE1BQU0sQ0FBQ0UsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUFDLGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDMUQsTUFBTSxDQUFDQyxZQUFZLEVBQUVDLGVBQWUsQ0FBQyxHQUFHLElBQUFGLGVBQVEsRUFBQyxFQUFFLENBQUM7RUFDcEQsTUFBTSxDQUFDRyxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHLElBQUFKLGVBQVEsRUFBQyxLQUFLLENBQUM7RUFDbkQsTUFBTSxDQUFDSyxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHLElBQUFOLGVBQVEsRUFBQyxLQUFLLENBQUM7RUFDckQsTUFBTSxDQUFDTyxhQUFhLENBQUMsR0FBRyxJQUFBUCxlQUFRLEVBQUNQLEtBQUssQ0FBQ2MsYUFBYSxDQUFDO0VBQ3JELE1BQU0sQ0FBQ0MsYUFBYSxFQUFFQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUFULGVBQVEsRUFBQ1AsS0FBSyxDQUFDZSxhQUFhLENBQUM7RUFDdkUsTUFBTSxDQUFDRSxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHLElBQUFYLGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDbEQsTUFBTSxDQUFDWSxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHLElBQUFiLGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDbEQsTUFBTSxDQUFDYyxZQUFZLEVBQUVDLGVBQWUsQ0FBQyxHQUFHLElBQUFmLGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDdEQsTUFBTSxDQUFDZ0IsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRyxJQUFBakIsZUFBUSxFQUFDLElBQUksQ0FBQztFQUNsRCxNQUFNLENBQUNrQixjQUFjLEVBQUVDLGlCQUFpQixDQUFDLEdBQUcsSUFBQW5CLGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDMUQsTUFBTSxDQUFDb0IsV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBRyxJQUFBckIsZUFBUSxFQUFDLEtBQUssQ0FBQztFQUNyRCxNQUFNLENBQUNzQixVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHLElBQUF2QixlQUFRLEVBQUMsRUFBRSxDQUFDO0VBQ2hELE1BQU0sQ0FBQ3dCLHVCQUF1QixFQUFFQywwQkFBMEIsQ0FBQyxHQUFHLElBQUF6QixlQUFRLEVBQUMsS0FBSyxDQUFDO0VBQzdFLE1BQU0sQ0FBQzBCLGdCQUFnQixFQUFFQyxtQkFBbUIsQ0FBQyxHQUFHLElBQUEzQixlQUFRLEVBQUMsRUFBRSxDQUFDO0VBQzVELE1BQU0sQ0FBQzRCLE1BQU0sRUFBRUMsU0FBUyxDQUFDLEdBQUcsSUFBQTdCLGVBQVEsRUFBQyxLQUFLLENBQUM7RUFDM0MsTUFBTSxDQUFDOEIsYUFBYSxFQUFFQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUEvQixlQUFRLEVBQUMsS0FBSyxDQUFDO0VBQ3pELE1BQU0sQ0FBQ2dDLDBCQUEwQixFQUFFQyw2QkFBNkIsQ0FBQyxHQUFHLElBQUFqQyxlQUFRLEVBQUMsU0FBUyxDQUFDO0VBQ3ZGLE1BQU0sQ0FBQ2tDLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUcsSUFBQW5DLGVBQVEsRUFBQyxDQUFDUCxLQUFLLENBQUMyQyxhQUFhLENBQUNDLFNBQVMsQ0FBQztFQUM1RSxNQUFNLENBQUNDLGVBQWUsRUFBRUMsa0JBQWtCLENBQUMsR0FBRyxJQUFBdkMsZUFBUSxFQUFDLElBQUksQ0FBQztFQUM1RCxNQUFNLENBQUN3QyxlQUFlLEVBQUVDLGtCQUFrQixDQUFDLEdBQUcsSUFBQXpDLGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDNUQ7RUFDQSxNQUFNLENBQUMwQyxjQUFjLEVBQUVDLGlCQUFpQixDQUFDLEdBQUcsSUFBQTNDLGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDMUQ7RUFDQSxNQUFNLENBQUM0QyxZQUFZLEVBQUVDLGVBQWUsQ0FBQyxHQUFHLElBQUE3QyxlQUFRLEVBQUMsS0FBSyxDQUFDO0VBQ3ZELE1BQU0sQ0FBQzhDLHFCQUFxQixFQUFFQyx3QkFBd0IsQ0FBQyxHQUFHLElBQUEvQyxlQUFRLEVBQUMsSUFBSSxDQUFDO0VBQ3hFLE1BQU0sQ0FBQ2dELFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUcsSUFBQWpELGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDcEQsTUFBTSxDQUFDa0QsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRyxJQUFBbkQsZUFBUSxFQUFDLElBQUksQ0FBQztFQUNsRCxNQUFNLENBQUNvRCxtQkFBbUIsRUFBRUMsc0JBQXNCLENBQUMsR0FBRyxJQUFBckQsZUFBUSxFQUFDLElBQUksQ0FBQztFQUNwRSxNQUFNLENBQUNzRCxZQUFZLENBQUMsR0FBRyxJQUFBdEQsZUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ25DLE1BQU0sQ0FBQ3VELFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUcsSUFBQXhELGVBQVEsRUFBQyxJQUFJLENBQUM7RUFDcEQsTUFBTSxDQUFDeUQsWUFBWSxFQUFFQyxlQUFlLENBQUMsR0FBR3BFLGNBQUssQ0FBQ1UsUUFBUSxDQUFDLElBQUksQ0FBQztFQUM1RCxNQUFNLENBQUMyRCxrQkFBa0IsRUFBRUMscUJBQXFCLENBQUMsR0FBR3RFLGNBQUssQ0FBQ1UsUUFBUSxDQUFDLEtBQUssQ0FBQztFQUN6RSxNQUFNLENBQUM2RCxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHLElBQUE5RCxlQUFRLEVBQUMsRUFBRSxDQUFDO0VBQ2xELE1BQU0sQ0FBQytELFlBQVksRUFBRUMsZUFBZSxDQUFDLEdBQUcxRSxjQUFLLENBQUNVLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDN0QsTUFBTSxDQUFDaUUsbUJBQW1CLEVBQUVDLHNCQUFzQixDQUFDLEdBQUc1RSxjQUFLLENBQUNVLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDM0UsTUFBTW1FLGtCQUFrQixHQUFHLElBQUF2RSxhQUFNLEVBQUMsQ0FBQzs7RUFFbkM7RUFDQTtFQUNBO0VBQ0EsTUFBTSxDQUFDd0UsT0FBTyxFQUFFQyxTQUFTLENBQUMsR0FBRyxJQUFBQywwQkFBaUIsRUFBQyxDQUFDO0VBQ2hELE1BQU1DLFlBQVksR0FBR0YsU0FBUyxHQUFHLENBQUMsSUFBSUEsU0FBUyxHQUFHLEdBQUc7RUFFckQsTUFBTUcsR0FBRyxHQUFHQSxDQUFBLEtBQU07SUFDZCxPQUFPO01BQ0hDLFNBQVNBLENBQUEsRUFBSTtRQUNUQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDNUJDLFVBQVUsQ0FBQyxDQUFDO01BQ2hCO0lBQ0osQ0FBQztFQUNMLENBQUM7RUFFRCxNQUFNQyxPQUFPLEdBQUdBLENBQUEsS0FBTTtJQUNsQixPQUFPO01BQ0gsSUFBSUMsRUFBRUEsQ0FBQSxFQUFHO1FBQ0wsT0FBTyxlQUFlLEdBQUdyRixLQUFLLENBQUMyQyxhQUFhLENBQUMwQyxFQUFFO01BQ25ELENBQUM7TUFDRCxJQUFJN0UsWUFBWUEsQ0FBQSxFQUFHO1FBQ2YsT0FBT0EsWUFBWTtNQUN2QixDQUFDO01BQ0Q4RSxFQUFFLEVBQUVBLENBQUNDLFNBQVMsRUFBRUMsRUFBRSxLQUFLO1FBQ25CLFFBQVFELFNBQVM7VUFDYixLQUFLRSx3QkFBVyxDQUFDQyx1QkFBdUI7WUFDcEM7VUFDSixLQUFLRCx3QkFBVyxDQUFDRSxXQUFXO1lBQ3hCQyxPQUFPLENBQUNKLEVBQUUsQ0FBQ0ssT0FBTyxDQUFDO1lBQ25CO1VBQ0osS0FBS0osd0JBQVcsQ0FBQ0ssaUJBQWlCO1lBQzlCQyxVQUFVLENBQUNQLEVBQUUsQ0FBQ0ssT0FBTyxDQUFDO1lBQ3RCO1VBQ0osS0FBS0osd0JBQVcsQ0FBQ08saUJBQWlCO1lBQzlCO1lBQ0EsSUFBSTVGLFNBQVMsQ0FBQzZGLE9BQU8sRUFBRTtjQUNuQjdDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDekI7WUFDQTtVQUNKLEtBQUtxQyx3QkFBVyxDQUFDUyxjQUFjO1lBQzNCO1lBQ0EsSUFBSTlGLFNBQVMsQ0FBQzZGLE9BQU8sRUFBRTtjQUNuQjdDLGVBQWUsQ0FBQyxLQUFLLENBQUM7Y0FDdEIrQyxZQUFZLENBQUMsQ0FBQztZQUNsQjtZQUNBO1VBQ0osS0FBS1Ysd0JBQVcsQ0FBQ1csZUFBZTtZQUM1QjtZQUNBO1lBQ0FELFlBQVksQ0FBQyxDQUFDO1lBQ2Q7VUFDSixLQUFLVix3QkFBVyxDQUFDWSx1QkFBdUI7WUFDcENuRCxpQkFBaUIsQ0FBQywyREFBMkQsQ0FBQztZQUM5RTtVQUNKLEtBQUt1Qyx3QkFBVyxDQUFDYSw2QkFBNkI7WUFDMUNDLGtCQUFrQixDQUFDZixFQUFFLGFBQUZBLEVBQUUsdUJBQUZBLEVBQUUsQ0FBRUssT0FBTyxDQUFDO1lBQy9CO1VBQ0osS0FBS0osd0JBQVcsQ0FBQ2UsWUFBWTtZQUN6QjtVQUNKLEtBQUtmLHdCQUFXLENBQUNnQixVQUFVO1lBQ3ZCQyxXQUFXLENBQUNsQixFQUFFLENBQUNLLE9BQU8sQ0FBQztZQUN2QjtVQUNKLEtBQUtKLHdCQUFXLENBQUNrQixVQUFVO1lBQ3ZCQyxXQUFXLENBQUNwQixFQUFFLENBQUNLLE9BQU8sQ0FBQztZQUN2QjtVQUNKLEtBQUtKLHdCQUFXLENBQUNvQixXQUFXO1lBQ3hCQyxNQUFNLENBQUMsQ0FBQztZQUNSO1VBQ0osS0FBS3JCLHdCQUFXLENBQUNzQixlQUFlO1lBQzVCOUMsZUFBZSxDQUFDLEtBQUssQ0FBQztZQUN0QkUscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBQzVCO1VBQ0osS0FBS3NCLHdCQUFXLENBQUN1QixZQUFZO1lBQ3pCQyxTQUFTLENBQUN6QixFQUFFLENBQUNLLE9BQU8sQ0FBQztZQUNyQjtVQUNKLEtBQUtKLHdCQUFXLENBQUN5Qix5QkFBeUI7WUFDdENKLE1BQU0sQ0FBQyxDQUFDO1lBQ1I3QixPQUFPLENBQUNDLEdBQUcsQ0FBQyxpRkFBaUYsQ0FBQztZQUM5RjtVQUNKLEtBQUtPLHdCQUFXLENBQUMwQixZQUFZO1lBQ3pCakUsaUJBQWlCLENBQUNzQyxFQUFFLENBQUNLLE9BQU8sSUFBSUwsRUFBRSxDQUFDSyxPQUFPLENBQUN1QixPQUFPLEdBQzVDNUIsRUFBRSxDQUFDSyxPQUFPLENBQUN1QixPQUFPLEdBQ2xCLDJEQUEyRCxDQUFDO1lBQ2xFO1FBQ1I7TUFDSjtJQUNKLENBQUM7RUFDTCxDQUFDO0VBRUQsTUFBTUgsU0FBUyxHQUFJRyxPQUFPLElBQUs7SUFDM0IsSUFBR3ZGLFVBQVUsS0FBSyxNQUFNLEVBQUU7TUFDdEIsSUFBSTBCLFdBQVcsR0FBRzZELE9BQU8sQ0FBQzdELFdBQVc7TUFDckMsSUFBSThELDJCQUFrQixDQUFDQyxjQUFjLENBQUMsQ0FBQyxDQUFDQyxRQUFRLEtBQUtoRSxXQUFXLENBQUNpRSxXQUFXLENBQUNELFFBQVEsRUFBRTtRQUNuRkUsb0JBQW9CLENBQUM7VUFDakJMLE9BQU8sRUFBRTdELFdBQVcsQ0FBQ2lFLFdBQVcsQ0FBQ0UsSUFBSSxHQUFHLEdBQUcsR0FBR25FLFdBQVcsQ0FBQ2lFLFdBQVcsQ0FBQ0UsSUFBSSxJQUNuRW5FLFdBQVcsQ0FBQ29FLE9BQU8sSUFBSXBFLFdBQVcsQ0FBQ29FLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQzFKLE1BQU0sR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHcUYsV0FBVyxDQUFDb0UsT0FBTyxHQUFHLEVBQUU7UUFDMUcsQ0FBQyxDQUFDO1FBRUZySCxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7TUFDM0I7SUFDSjtFQUNKLENBQUM7RUFFRCxNQUFNb0csV0FBVyxHQUFJYixPQUFPLElBQUs7SUFDN0J6QixXQUFXLENBQUN0RyxJQUFJLENBQUMrSCxPQUFPLENBQUNnQyxNQUFNLENBQUM7SUFDaEN4RCxjQUFjLENBQUMsRUFBRSxDQUFDeUQsTUFBTSxDQUFDMUQsV0FBVyxDQUFDLENBQUM7RUFDMUMsQ0FBQztFQUVELE1BQU13QyxXQUFXLEdBQUlmLE9BQU8sSUFBSztJQUM3QixJQUFJekIsV0FBVyxDQUFDbEcsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUN4QixJQUFJNkosS0FBSyxHQUFHM0QsV0FBVyxDQUFDNEQsU0FBUyxDQUFFQyxDQUFDLElBQUtBLENBQUMsS0FBS3BDLE9BQU8sQ0FBQ2dDLE1BQU0sQ0FBQztNQUM5RCxJQUFJRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDWjNELFdBQVcsQ0FBQzhELE1BQU0sQ0FBQ0gsS0FBSyxFQUFFLENBQUMsQ0FBQztNQUNoQztJQUNKO0lBRUExRCxjQUFjLENBQUMsRUFBRSxDQUFDeUQsTUFBTSxDQUFDMUQsV0FBVyxDQUFDLENBQUM7RUFDMUMsQ0FBQztFQUVELElBQUErRCxnQkFBUyxFQUFDLE1BQU07SUFDWixJQUFJckUsV0FBVyxFQUFFO01BQ2JoQyxhQUFhLENBQUMsTUFBTSxDQUFDO01BQ3JCRixjQUFjLENBQUMsSUFBSSxDQUFDO01BQ3BCdEIsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQzVCO0VBQ0osQ0FBQyxFQUFFLENBQUN3RCxXQUFXLENBQUMsQ0FBQztFQUVqQixNQUFNcUIsVUFBVSxHQUFHQSxDQUFBLEtBQU07SUFDckIsSUFBQWlELHNCQUFXLEtBQUFOLE1BQUEsQ0FBSXRJLFFBQVEsR0FBRyxHQUFHLEdBQUc2SCwyQkFBa0IsQ0FBQ2dCLGNBQWMsQ0FBQyxDQUFDLDZDQUFBUCxNQUFBLENBQTBDOUgsS0FBSyxDQUFDMkMsYUFBYSxDQUFDMEMsRUFBRSxHQUFLaUQsUUFBUSxJQUFLO01BQ2pKckQsT0FBTyxDQUFDQyxHQUFHLENBQUMsd0JBQXdCLEVBQUVvRCxRQUFRLENBQUM7TUFDL0MsSUFBSUEsUUFBUSxJQUFJQSxRQUFRLENBQUNqRCxFQUFFLEVBQUU7UUFDekJ0QixjQUFjLENBQUN1RSxRQUFRLENBQUM7TUFDNUI7SUFDSixDQUFDLEVBQUdoTSxDQUFDLElBQUssQ0FFVixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNuQixDQUFDO0VBRUQsTUFBTWlLLGtCQUFrQixHQUFJVixPQUFPLElBQUs7SUFDcEMsSUFBR0EsT0FBTyxFQUFFO01BQ1I7TUFDQTtNQUNBcEYsZUFBZSxDQUFFOEgsSUFBSSxJQUFLQSxJQUFJLENBQUNDLEdBQUcsQ0FBRVAsQ0FBQyxJQUNqQ0EsQ0FBQyxDQUFDSixNQUFNLEtBQUtoQyxPQUFPLENBQUNnQyxNQUFNLEdBQUE3SixhQUFBLENBQUFBLGFBQUEsS0FDakJpSyxDQUFDO1FBQUU5RyxVQUFVLEVBQUUwRSxPQUFPLENBQUMxRSxVQUFVO1FBQUVGLFVBQVUsRUFBRTRFLE9BQU8sQ0FBQzVFO01BQVUsS0FDckVnSCxDQUFDLENBQUMsQ0FBQztNQUViUSx1QkFBYyxDQUFDQyxTQUFTLENBQUNqRCx3QkFBVyxDQUFDYSw2QkFBNkIsRUFBRVQsT0FBTyxDQUFDO0lBQ2hGO0VBQ0osQ0FBQztFQUVELFNBQVM4QyxvQkFBb0JBLENBQUEsRUFBRztJQUM1QkMsc0JBQWEsQ0FBQ0MsU0FBUyxDQUFDcEQsd0JBQVcsQ0FBQ2EsNkJBQTZCLEVBQUU7TUFDL0R3QyxTQUFTLEVBQUU5SSxLQUFLLENBQUMyQyxhQUFhLENBQUMwQyxFQUFFO01BQ2pDd0MsTUFBTSxFQUFFUiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUTtNQUNwRHBHLFVBQVUsRUFBRUEsVUFBVTtNQUN0QkYsVUFBVSxFQUFFQTtJQUNoQixDQUFDLENBQUMsQ0FDRzhILEtBQUssQ0FBRUMsS0FBSyxJQUFLLENBQ2xCLENBQUMsQ0FBQztFQUNWO0VBRUEsSUFBQWIsZ0JBQVMsRUFBQyxNQUFNO0lBQ1osSUFBSWhILFVBQVUsS0FBSyxJQUFJLEVBQUU7TUFDckJvRixrQkFBa0IsQ0FBQztRQUNmc0IsTUFBTSxFQUFFUiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUTtRQUNwRHRHLFVBQVU7UUFDVkU7TUFDSixDQUFDLENBQUM7TUFFRndILG9CQUFvQixDQUFDLENBQUM7SUFDMUI7RUFDSixDQUFDLEVBQUUsQ0FBQ3hILFVBQVUsQ0FBQyxDQUFDO0VBRWhCLElBQUFnSCxnQkFBUyxFQUFDLE1BQU07SUFDWixJQUFJbEgsVUFBVSxLQUFLLElBQUksRUFBRTtNQUNyQnNGLGtCQUFrQixDQUFDO1FBQ2ZzQixNQUFNLEVBQUVSLDJCQUFrQixDQUFDQyxjQUFjLENBQUMsQ0FBQyxDQUFDQyxRQUFRO1FBQ3BEdEcsVUFBVTtRQUNWRTtNQUNKLENBQUMsQ0FBQztNQUVGd0gsb0JBQW9CLENBQUMsQ0FBQztJQUMxQjtFQUNKLENBQUMsRUFBRSxDQUFDMUgsVUFBVSxDQUFDLENBQUM7RUFFaEIsTUFBTXdHLG9CQUFvQixHQUFJd0IsS0FBSyxJQUFLO0lBQ3BDLElBQUkxSCxVQUFVLEtBQUt0QyxNQUFNLENBQUNFLE9BQU8sSUFBSThKLEtBQUssQ0FBQzdCLE9BQU8sSUFBSTZCLEtBQUssQ0FBQzdCLE9BQU8sQ0FBQ2xKLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDNUU4RSxrQkFBa0IsQ0FBQ2lHLEtBQUssQ0FBQzdCLE9BQU8sQ0FBQztNQUNqQyxNQUFNOEIsY0FBYyxHQUFHQyxVQUFVLENBQUMsTUFBTTtRQUNwQ25HLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUN4Qm9HLFlBQVksQ0FBQ0YsY0FBYyxDQUFDO01BQ2hDLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDWjtFQUNKLENBQUM7RUFFRCxNQUFNdEQsT0FBTyxHQUFJQyxPQUFPLElBQUs7SUFDekJaLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLGFBQWEsRUFBRVcsT0FBTyxDQUFDO0lBQ25Dd0QscUJBQXFCLENBQUN4RCxPQUFPLENBQUN5RCxJQUFJLENBQUM7SUFDbkN0SCwwQkFBMEIsQ0FBQyxLQUFLLENBQUM7SUFDakMsSUFBSVQsVUFBVSxLQUFLdEMsTUFBTSxDQUFDQyxLQUFLLEVBQUU7TUFDN0JzQyxhQUFhLENBQUN2QyxNQUFNLENBQUNFLE9BQU8sQ0FBQztNQUM3QjJDLGFBQWEsQ0FBQyxRQUFRLENBQUM7TUFDdkJGLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDeEI7SUFFQTZGLG9CQUFvQixDQUFDO01BQ2pCTCxPQUFPLEVBQUV2QixPQUFPLENBQUN5RCxJQUFJLENBQUM1QixJQUFJLEdBQUc7SUFDakMsQ0FBQyxDQUFDO0VBQ04sQ0FBQztFQUVELE1BQU0zQixVQUFVLEdBQUlGLE9BQU8sSUFBSztJQUM1QixJQUFJN0YsS0FBSyxDQUFDMkMsYUFBYSxDQUFDMEMsRUFBRSxLQUFLUSxPQUFPLENBQUNpRCxTQUFTLEVBQUU7TUFDOUM7TUFDQTtNQUNBckksZUFBZSxDQUFFOEgsSUFBSSxJQUFLQSxJQUFJLENBQUMzSyxNQUFNLENBQUVxSyxDQUFDLElBQUtBLENBQUMsQ0FBQ0osTUFBTSxLQUFLaEMsT0FBTyxDQUFDZ0MsTUFBTSxDQUFDLENBQUM7SUFDOUU7RUFDSixDQUFDOztFQUVEO0VBQ0E7RUFDQTtFQUNBLE1BQU0wQixxQkFBcUIsR0FBSUMsS0FBSyxJQUFLO0lBQ3JDLE1BQU1DLElBQUksR0FBRyxDQUFDRCxLQUFLLElBQUksRUFBRSxFQUFFaEIsR0FBRyxDQUFFa0IsQ0FBQyxLQUFNO01BQ25DN0IsTUFBTSxFQUFFNkIsQ0FBQyxDQUFDN0IsTUFBTTtNQUNoQkgsSUFBSSxFQUFFZ0MsQ0FBQyxDQUFDaEMsSUFBSTtNQUNaaUMsTUFBTSxFQUFFRCxDQUFDLENBQUNDLE1BQU07TUFDaEJ4SSxVQUFVLEVBQUV1SSxDQUFDLENBQUN2SSxVQUFVO01BQ3hCRixVQUFVLEVBQUV5SSxDQUFDLENBQUN6SSxVQUFVO01BQ3hCMkksU0FBUyxFQUFFRixDQUFDLENBQUNFO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBRUhuSixlQUFlLENBQUNnSixJQUFJLENBQUM7RUFDekIsQ0FBQztFQUVELE1BQU10RCxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN2QnlDLHNCQUFhLENBQUNDLFNBQVMsQ0FBQ3BELHdCQUFXLENBQUNvRSxTQUFTLEVBQUU7TUFDM0NmLFNBQVMsRUFBRTlJLEtBQUssQ0FBQzJDLGFBQWEsQ0FBQzBDLEVBQUU7TUFDakN3QyxNQUFNLEVBQUVSLDJCQUFrQixDQUFDQyxjQUFjLENBQUMsQ0FBQyxDQUFDQztJQUNoRCxDQUFDLENBQUMsQ0FBQ3VDLElBQUksQ0FBRXhCLFFBQVEsSUFBSztNQUNsQixJQUFJQSxRQUFRLElBQUlBLFFBQVEsQ0FBQ3lCLElBQUksRUFBRTtRQUMzQjlFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLGlCQUFpQixFQUFFb0QsUUFBUSxDQUFDeUIsSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDekRULHFCQUFxQixDQUFDakIsUUFBUSxDQUFDeUIsSUFBSSxDQUFDQyxXQUFXLENBQUM7TUFDcEQ7SUFDSixDQUFDLENBQUMsQ0FBQ2pCLEtBQUssQ0FBRXpNLENBQUMsSUFBSztNQUNaMkksT0FBTyxDQUFDQyxHQUFHLENBQUMsc0JBQXNCLEVBQUU1SSxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0VBQ04sQ0FBQzs7RUFFRDtFQUNBO0VBQ0EsSUFBQTZMLGdCQUFTLEVBQUMsTUFBTTtJQUNaLElBQUk1RyxVQUFVLEtBQUt0QyxNQUFNLENBQUNFLE9BQU8sSUFBSXFCLFlBQVksQ0FBQ3RDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDNUQ4RCwwQkFBMEIsQ0FBQyxJQUFJLENBQUM7TUFDaENSLGFBQWEsQ0FBQ3ZDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0lBQy9CLENBQUMsTUFBTSxJQUFJc0IsWUFBWSxDQUFDdEMsTUFBTSxHQUFHLENBQUMsSUFBSTZELHVCQUF1QixFQUFFO01BQzNEQywwQkFBMEIsQ0FBQyxLQUFLLENBQUM7SUFDckM7RUFDSixDQUFDLEVBQUUsQ0FBQ3hCLFlBQVksQ0FBQyxDQUFDO0VBRWxCLE1BQU15SixtQkFBbUIsR0FBSTNOLENBQUMsSUFBSztJQUMvQixJQUFJNE4sS0FBSyxHQUFHQyxRQUFRLENBQUNDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztJQUN6RCxJQUFJOU4sQ0FBQyxDQUFDK04sTUFBTSxDQUFDQyxJQUFJLEVBQUU7TUFDZkosS0FBSyxDQUFDSyxLQUFLLENBQUNDLE1BQU0sR0FBRyxnQkFBZ0I7SUFDekMsQ0FBQyxNQUFNO01BQ0hOLEtBQUssQ0FBQ0ssS0FBSyxDQUFDQyxNQUFNLEdBQUcsWUFBWTtJQUNyQztFQUNKLENBQUM7RUFFRCxJQUFBckMsZ0JBQVMsRUFBQyxNQUFNO0lBQ1p0RSxZQUFZLENBQUNrQixHQUFHLEdBQUdLLE9BQU8sQ0FBQyxDQUFDO0lBQzVCcEYsS0FBSyxDQUFDeUssTUFBTSxDQUFDMUYsR0FBRyxHQUFHQSxHQUFHLENBQUMsQ0FBQztFQUM1QixDQUFDLENBQUM7RUFFRixJQUFBb0QsZ0JBQVMsRUFBQyxNQUFNO0lBQ1osSUFBSW5JLEtBQUssQ0FBQzBLLFFBQVEsRUFBRTtNQUNoQnRKLGFBQWEsQ0FBQyxDQUFDcEIsS0FBSyxDQUFDMEssUUFBUSxDQUFDQyxPQUFPLENBQUM7TUFDdEN6SixhQUFhLENBQUMsQ0FBQ2xCLEtBQUssQ0FBQzBLLFFBQVEsQ0FBQ0UsT0FBTyxDQUFDO0lBQzFDO0VBQ0osQ0FBQyxFQUFFLENBQUM1SyxLQUFLLENBQUMwSyxRQUFRLENBQUMsQ0FBQztFQUVwQixJQUFBdkMsZ0JBQVMsRUFBQyxNQUFNO0lBQ1osSUFBSSxDQUFDMEMsY0FBSyxDQUFDQyxNQUFNLENBQUNwSyxVQUFVLENBQUMsRUFBRTtNQUMzQixJQUFJQSxVQUFVLEVBQUU7UUFDWmtJLHNCQUFhLENBQUNDLFNBQVMsQ0FBQ3BELHdCQUFXLENBQUNnQixVQUFVLEVBQUU7VUFDNUNzRSxNQUFNLEVBQUUvSyxLQUFLLENBQUMyQyxhQUFhLENBQUMwQyxFQUFFO1VBQzlCd0MsTUFBTSxFQUFFUiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0M7UUFDaEQsQ0FBQyxDQUFDLENBQ0d3QixLQUFLLENBQUVDLEtBQUssSUFBSyxDQUNsQixDQUFDLENBQUM7TUFDVixDQUFDLE1BQU07UUFDSEosc0JBQWEsQ0FBQ0MsU0FBUyxDQUFDcEQsd0JBQVcsQ0FBQ2tCLFVBQVUsRUFBRTtVQUM1Q29FLE1BQU0sRUFBRS9LLEtBQUssQ0FBQzJDLGFBQWEsQ0FBQzBDLEVBQUU7VUFDOUJ3QyxNQUFNLEVBQUVSLDJCQUFrQixDQUFDQyxjQUFjLENBQUMsQ0FBQyxDQUFDQztRQUNoRCxDQUFDLENBQUMsQ0FBQ3dCLEtBQUssQ0FBRUMsS0FBSyxJQUFLLENBQ3BCLENBQUMsQ0FBQztNQUNOO0lBRUo7RUFDSixDQUFDLEVBQUUsQ0FBQ3RJLFVBQVUsQ0FBQyxDQUFDO0VBRWhCLElBQUF5SCxnQkFBUyxFQUFDLE1BQU07SUFDWk0sdUJBQWMsQ0FBQ3VDLG1CQUFtQixDQUFDbkgsWUFBWSxDQUFDO0lBQ2hEd0QsMkJBQWtCLENBQUM0RCxpQ0FBaUMsQ0FBQztNQUNqRDdGLE9BQU8sRUFBRTtRQUNMLElBQUlDLEVBQUVBLENBQUEsRUFBRztVQUNMLE9BQU8sZUFBZTtRQUMxQixDQUFDO1FBQ0Q2RixlQUFlLEVBQUVBLENBQUNDLE9BQU8sRUFBRUMsU0FBUyxLQUFLO1VBQ3JDLElBQUk5TixNQUFNLENBQUNJLElBQUksQ0FBQzBOLFNBQVMsQ0FBQyxDQUNyQkMsSUFBSSxDQUFFQyxHQUFHLElBQUtBLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQyxFQUFFO1lBQzlDaEssZUFBZSxDQUFDOEosU0FBUyxDQUFDRyxrQkFBa0IsQ0FBQztVQUNqRDtRQUNKO01BQ0o7SUFDSixDQUFDLENBQUMsQ0FDR3pCLElBQUksQ0FBRTBCLGNBQWMsSUFBSztNQUN0QmxLLGVBQWUsQ0FBQ2tLLGNBQWMsR0FBR0EsY0FBYyxDQUFDRCxrQkFBa0IsR0FBRyxXQUFXLENBQUM7SUFDckYsQ0FBQyxDQUFDO0lBRU45Qyx1QkFBYyxDQUFDZ0QsZ0JBQWdCLENBQUM1SCxZQUFZLEVBQUU0Qix3QkFBVyxDQUFDQyx1QkFBdUIsRUFBRUQsd0JBQVcsQ0FBQ0UsV0FBVyxFQUFFRix3QkFBVyxDQUFDSyxpQkFBaUIsRUFDcklMLHdCQUFXLENBQUNlLFlBQVksRUFBRWYsd0JBQVcsQ0FBQ1MsY0FBYyxFQUFFVCx3QkFBVyxDQUFDTyxpQkFBaUIsRUFBRVAsd0JBQVcsQ0FBQ2dCLFVBQVUsRUFBRWhCLHdCQUFXLENBQUNrQixVQUFVLEVBQ25JbEIsd0JBQVcsQ0FBQ1csZUFBZSxFQUFFWCx3QkFBVyxDQUFDeUIseUJBQXlCLEVBQUV6Qix3QkFBVyxDQUFDWSx1QkFBdUIsRUFDdkdaLHdCQUFXLENBQUNzQixlQUFlLEVBQUV0Qix3QkFBVyxDQUFDb0IsV0FBVyxFQUFFcEIsd0JBQVcsQ0FBQ3VCLFlBQVksRUFBRXZCLHdCQUFXLENBQUNhLDZCQUE2QixFQUN6SGIsd0JBQVcsQ0FBQzBCLFlBQVksQ0FBQztJQUU3QmdELFFBQVEsQ0FBQ3VCLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFekIsbUJBQW1CLENBQUM7SUFDcEU1QywyQkFBa0IsQ0FBQ3NFLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQUM1Q3RFLDJCQUFrQixDQUFDdUUsbUJBQW1CLENBQUM1TCxLQUFLLENBQUMyQyxhQUFhLENBQUMySSxHQUFHLENBQUM7SUFDL0QsT0FBTyxNQUFNO01BQ1Q3Qyx1QkFBYyxDQUFDdUMsbUJBQW1CLENBQUNuSCxZQUFZLENBQUM7TUFDaERnSSxtQkFBWSxDQUFDQyxxQ0FBcUMsQ0FBQyxlQUFlLENBQUM7TUFDbkUzQixRQUFRLENBQUM0QixtQkFBbUIsQ0FBQyxvQkFBb0IsRUFBRTlCLG1CQUFtQixDQUFDO01BRXZFLElBQUk1QywyQkFBa0IsQ0FBQzJFLGdCQUFnQixDQUFDLENBQUMsRUFBRTtRQUN2Q3BELHNCQUFhLENBQUNxRCxZQUFZLENBQUNqTSxLQUFLLENBQUMyQyxhQUFhLENBQUMwQyxFQUFFLENBQUM7UUFDbERnQywyQkFBa0IsQ0FBQ3NFLG1CQUFtQixDQUFDLEtBQUssQ0FBQztRQUM3Q3RFLDJCQUFrQixDQUFDdUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDO01BQ2hEO0lBQ0osQ0FBQztFQUNMLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTi9MLGNBQUssQ0FBQ3NJLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCZCwyQkFBa0IsQ0FBQ3NFLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQUM1Q3RFLDJCQUFrQixDQUFDdUUsbUJBQW1CLENBQUM1TCxLQUFLLENBQUMyQyxhQUFhLENBQUMySSxHQUFHLENBQUM7SUFDL0QsSUFBSVksWUFBWTtJQUVoQixJQUFJbE0sS0FBSyxDQUFDMkMsYUFBYSxDQUFDd0osSUFBSSxDQUFDNUUsUUFBUSxLQUFLRiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxFQUFFO01BQ3BGMkUsWUFBWSxHQUFHbE0sS0FBSyxDQUFDMkMsYUFBYSxDQUFDd0osSUFBSSxDQUFDekUsSUFBSTtJQUNoRCxDQUFDLE1BQU07TUFDSDtNQUNBO01BQ0EsTUFBTTBFLEVBQUUsR0FBR3BNLEtBQUssQ0FBQzJDLGFBQWEsQ0FBQzBKLFNBQVMsQ0FBQ2hCLElBQUksQ0FBRWlCLENBQUMsSUFBS0EsQ0FBQyxDQUFDL0UsUUFBUSxLQUFLRiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDO01BQ2pIMkUsWUFBWSxHQUFHRSxFQUFFLEdBQUdBLEVBQUUsQ0FBQzFFLElBQUksR0FBR0wsMkJBQWtCLENBQUNDLGNBQWMsQ0FBQyxDQUFDLENBQUNDLFFBQVE7SUFDOUU7SUFFQTNELHNCQUFzQixDQUFDc0ksWUFBWSxDQUFDO0lBQ3BDOUosU0FBUyxDQUFDcEMsS0FBSyxDQUFDMkMsYUFBYSxDQUFDd0osSUFBSSxDQUFDNUUsUUFBUSxLQUFLRiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDO0lBQzdGakYsZ0JBQWdCLENBQUN0QyxLQUFLLENBQUMyQyxhQUFhLENBQUM0SixhQUFhLEtBQUtsRiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDO0lBRXBHLElBQUk7TUFDQWlGLGNBQUssQ0FBQ0MsV0FBVyxDQUFDek0sS0FBSyxDQUFDMkMsYUFBYSxFQUFFM0MsS0FBSyxDQUFDMEssUUFBUSxFQUFFd0IsWUFBWSxDQUFDLENBQy9EcEMsSUFBSSxDQUFFeEIsUUFBUSxJQUFLO1FBQ2hCckQsT0FBTyxDQUFDQyxHQUFHLENBQUMsa0JBQWtCLEVBQUVvRCxRQUFRLENBQUM7UUFDekNsSSxTQUFTLENBQUM2RixPQUFPLEdBQUcsSUFBSTtRQUN4QnlHLGtCQUFrQixDQUFDcEUsUUFBUSxDQUFDOUgsWUFBWSxDQUFDO1FBQ3pDc0Msa0JBQWtCLENBQUN3RixRQUFRLENBQUN6RixlQUFlLENBQUM7UUFDNUNTLHdCQUF3QixDQUFDZ0YsUUFBUSxDQUFDcUUsdUJBQXVCLENBQUM7UUFDMUQ7UUFDQW5MLGFBQWEsQ0FBQzhHLFFBQVEsQ0FBQzlILFlBQVksSUFBSThILFFBQVEsQ0FBQzlILFlBQVksQ0FBQ3RDLE1BQU0sR0FBRyxDQUFDLEdBQUdlLE1BQU0sQ0FBQ0UsT0FBTyxHQUFHRixNQUFNLENBQUNDLEtBQUssQ0FBQztNQUM1RyxDQUFDLENBQUMsQ0FDRDZKLEtBQUssQ0FBRXpNLENBQUMsSUFBSztRQUNWa0YsYUFBYSxDQUFDdkMsTUFBTSxDQUFDSSxZQUFZLENBQUM7TUFDdEMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLE9BQU8vQyxDQUFDLEVBQUU7TUFDUmtGLGFBQWEsQ0FBQ3ZDLE1BQU0sQ0FBQ0ksWUFBWSxDQUFDO0lBQ3RDO0lBRUEsT0FBTyxNQUFNO01BQ1RnSSwyQkFBa0IsQ0FBQ3NFLG1CQUFtQixDQUFDLEtBQUssQ0FBQztNQUM3Q3RFLDJCQUFrQixDQUFDdUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7RUFDTCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sU0FBU3ZDLHFCQUFxQkEsQ0FBQ0MsSUFBSSxFQUFFO0lBQ2pDO0lBQ0E7SUFDQTdJLGVBQWUsQ0FBRThILElBQUksSUFBSztNQUN0QixJQUFJQSxJQUFJLENBQUM4QyxJQUFJLENBQUUzQixDQUFDLElBQUtBLENBQUMsQ0FBQzdCLE1BQU0sS0FBS3lCLElBQUksQ0FBQ3pCLE1BQU0sQ0FBQyxFQUFFO1FBQzVDLE9BQU9VLElBQUksQ0FBQ0MsR0FBRyxDQUFFUCxDQUFDLElBQUtBLENBQUMsQ0FBQ0osTUFBTSxLQUFLeUIsSUFBSSxDQUFDekIsTUFBTSxHQUFBN0osYUFBQSxDQUFBQSxhQUFBLEtBRXBDaUssQ0FBQztVQUNKUCxJQUFJLEVBQUU0QixJQUFJLENBQUM1QixJQUFJO1VBQ2ZpQyxNQUFNLEVBQUVMLElBQUksQ0FBQ0ssTUFBTTtVQUNuQnhJLFVBQVUsRUFBRW1JLElBQUksQ0FBQ25JLFVBQVU7VUFDM0JGLFVBQVUsRUFBRXFJLElBQUksQ0FBQ3JJLFVBQVU7VUFDM0IySSxTQUFTLEVBQUVOLElBQUksQ0FBQ007UUFBUyxLQUUzQjNCLENBQUMsQ0FBQztNQUNaO01BRUEsT0FBTyxDQUFDLEdBQUdNLElBQUksRUFBRTtRQUNiVixNQUFNLEVBQUV5QixJQUFJLENBQUN6QixNQUFNO1FBQ25CSCxJQUFJLEVBQUU0QixJQUFJLENBQUM1QixJQUFJO1FBQ2ZpQyxNQUFNLEVBQUVMLElBQUksQ0FBQ0ssTUFBTTtRQUNuQnhJLFVBQVUsRUFBRW1JLElBQUksQ0FBQ25JLFVBQVU7UUFDM0JGLFVBQVUsRUFBRXFJLElBQUksQ0FBQ3JJLFVBQVU7UUFDM0IySSxTQUFTLEVBQUVOLElBQUksQ0FBQ007TUFDcEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0VBQ047RUFFQSxNQUFNZ0QsZ0NBQWdDLEdBQUdBLENBQUMvRSxNQUFNLEVBQUUxRyxVQUFVLEVBQUVGLFVBQVUsS0FBSyxDQUU3RSxDQUFDO0VBRUQsTUFBTXlMLGtCQUFrQixHQUFJbEQsS0FBSyxJQUFLO0lBQ2xDdkUsT0FBTyxDQUFDQyxHQUFHLENBQUMsaURBQWlELEVBQUVzRSxLQUFLLENBQUM7SUFDckU7SUFDQUQscUJBQXFCLENBQUNDLEtBQUssQ0FBQztJQUU1QixJQUFJQSxLQUFLLElBQUlBLEtBQUssQ0FBQ3RMLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDM0IwRCxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ3hCO0VBQ0osQ0FBQztFQUVELE1BQU1rRixNQUFNLEdBQUdBLENBQUEsS0FBTTtJQUNqQjhCLHNCQUFhLENBQUNxRCxZQUFZLENBQUNqTSxLQUFLLENBQUMyQyxhQUFhLENBQUMwQyxFQUFFLENBQUM7SUFDbERnQywyQkFBa0IsQ0FBQ3NFLG1CQUFtQixDQUFDLEtBQUssQ0FBQztJQUM3Q3RFLDJCQUFrQixDQUFDd0YsaUJBQWlCLENBQUMsUUFBUSxDQUFDO0lBQzlDakwsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUNyQkUsYUFBYSxDQUFDLEVBQUUsQ0FBQztFQUNyQixDQUFDO0VBRUQsTUFBTWdMLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3JCekYsMkJBQWtCLENBQUMwRixpQkFBaUIsQ0FBQyxtREFBbUQsRUFBR0MsTUFBTSxJQUFLO01BQ2xHLElBQUlBLE1BQU0sS0FBSyxJQUFJLEVBQUU7UUFDakJwRSxzQkFBYSxDQUFDa0UsVUFBVSxDQUFDOU0sS0FBSyxDQUFDMkMsYUFBYSxDQUFDMEMsRUFBRSxDQUFDO1FBQ2hEZ0MsMkJBQWtCLENBQUNzRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFDN0N0RSwyQkFBa0IsQ0FBQ3VFLG1CQUFtQixDQUFDLElBQUksQ0FBQztRQUM1Q3ZFLDJCQUFrQixDQUFDd0YsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQzlDakwsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUNyQkUsYUFBYSxDQUFDLEVBQUUsQ0FBQztNQUNyQjtJQUNKLENBQUMsQ0FBQztFQUNOLENBQUM7RUFFRCxNQUFNbUwsZUFBZSxHQUFHLFNBQUFBLENBQUMxSCxTQUFTLEVBQUV3RSxJQUFJLEVBQThCO0lBQUEsSUFBNUJtRCxnQkFBZ0IsR0FBQWpQLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFrUCxTQUFBLEdBQUFsUCxTQUFBLE1BQUcsSUFBSTtJQUM3RCxJQUFJbVAsY0FBYyxHQUFHLEVBQUU7SUFDdkIsSUFBSSxDQUFDRixnQkFBZ0IsRUFBRTtNQUNuQixLQUFLLE1BQU0xRixXQUFXLElBQUloSCxZQUFZLEVBQUU7UUFDcEMsSUFBSWdILFdBQVcsQ0FBQ0ssTUFBTSxLQUFLUiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxFQUFFO1VBQ3JFNkYsY0FBYyxDQUFDdFAsSUFBSSxDQUFDMEosV0FBVyxDQUFDSyxNQUFNLENBQUM7UUFDM0M7TUFDSjtJQUNKLENBQUMsTUFBTTtNQUNIdUYsY0FBYyxHQUFHQSxjQUFjLENBQUN0RixNQUFNLENBQUNvRixnQkFBZ0IsQ0FBQztJQUM1RDtJQUVBdEUsc0JBQWEsQ0FBQ0MsU0FBUyxDQUFDcEQsd0JBQVcsQ0FBQ2UsWUFBWSxFQUFFO01BQzlDNkcsZUFBZSxFQUFFOUgsU0FBUztNQUMxQitILFVBQVUsRUFBRUYsY0FBYztNQUMxQnJELElBQUksRUFBRUE7SUFDVixDQUFDLENBQUMsQ0FDR2hCLEtBQUssQ0FBRUMsS0FBSyxJQUFLLENBQ2xCLENBQUMsQ0FBQztFQUNWLENBQUM7RUFFRCxNQUFNdUUsYUFBYSxHQUFHQSxDQUFBLEtBQU07SUFDeEJDLHVCQUFhLENBQUNDLElBQUksQ0FBQ3pOLEtBQUssQ0FBQzJDLGFBQWEsQ0FBQzBDLEVBQUUsRUFBRXJGLEtBQUssQ0FBQzJDLGFBQWEsQ0FBQytLLEtBQUssQ0FBQztJQUNyRTdNLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDcEJvTSxlQUFlLENBQUMsbUJBQW1CLEVBQUU7TUFDakNVLFNBQVMsRUFBRSxJQUFJO01BQ2Y5RixNQUFNLEVBQUVSLDJCQUFrQixDQUFDQyxjQUFjLENBQUMsQ0FBQyxDQUFDQztJQUNoRCxDQUFDLENBQUM7SUFFRmlHLHVCQUFhLENBQUNELGFBQWEsQ0FBQyxDQUFDO0VBQ2pDLENBQUM7RUFFRCxNQUFNSyxvQkFBb0IsR0FBRyxTQUFBQSxDQUFBLEVBQW9CO0lBQUEsSUFBbkJDLE9BQU8sR0FBQTVQLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFrUCxTQUFBLEdBQUFsUCxTQUFBLE1BQUcsSUFBSTtJQUN4QzRDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFFckIsSUFBSWdOLE9BQU8sRUFBRTtNQUNUWixlQUFlLENBQUMsbUJBQW1CLEVBQUU7UUFDakNVLFNBQVMsRUFBRSxLQUFLO1FBQ2hCOUYsTUFBTSxFQUFFUiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0M7TUFDaEQsQ0FBQyxDQUFDO0lBQ047SUFFQWlHLHVCQUFhLENBQUNJLG9CQUFvQixDQUFDLENBQUM7RUFDeEMsQ0FBQztFQUVELG9CQUNJM1MsTUFBQSxDQUFBdUIsT0FBQSxDQUFBc1IsYUFBQTtJQUNJN04sR0FBRyxFQUFFMEUsT0FBUTtJQUNiNEYsS0FBSyxFQUFFO01BQ0h3RCxLQUFLLEVBQUUsTUFBTTtNQUNiQyxNQUFNLEVBQUUsTUFBTTtNQUNkQyxNQUFNLEVBQUUsbUJBQW1CO01BQzNCQyxZQUFZLEVBQUUsS0FBSztNQUNuQkMsUUFBUSxFQUFFO0lBQ2Q7RUFBRSxnQkFFRmxULE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS00sU0FBUyxFQUFFO0VBQW1ELGdCQUMvRG5ULE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS00sU0FBUyxFQUFFLDBCQUEyQjtJQUFDN0QsS0FBSyxFQUFFO01BQUM4RCxRQUFRLEVBQUU7SUFBTztFQUFFLGdCQUNuRXBULE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS00sU0FBUyxFQUFFO0VBQXVDLGdCQUNuRG5ULE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS3ZELEtBQUssRUFBRTtNQUNSd0QsS0FBSyxFQUFFLE1BQU07TUFDYkMsTUFBTSxFQUFFLE1BQU07TUFDZE0sWUFBWSxFQUFFO0lBQ2xCO0VBQUUsZ0JBQ0VyVCxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBLENBQUN0UyxRQUFBLENBQUFnQixPQUFPO0lBQUNxSCxZQUFZLEVBQUU7TUFDbkIwSyxXQUFXLEVBQUdDLEtBQUssSUFBSztRQUNwQnROLGFBQWEsQ0FBQ3NOLEtBQUssQ0FBQztNQUN4QixDQUFDO01BQ0RDLFdBQVcsRUFBR0QsS0FBSyxJQUFLO1FBQ3BCcE4sYUFBYSxDQUFDb04sS0FBSyxDQUFDO01BQ3hCLENBQUM7TUFDREUsT0FBTyxFQUFFQSxDQUFBLEtBQU07UUFDWDVILE1BQU0sQ0FBQyxDQUFDO01BQ1osQ0FBQztNQUNEZ0csVUFBVSxFQUFFQSxDQUFBLEtBQU07UUFDZEEsVUFBVSxDQUFDLENBQUM7TUFDaEIsQ0FBQztNQUNENkIsUUFBUSxFQUFFQSxDQUFBLEtBQU07UUFDWnhKLFVBQVUsQ0FBQyxDQUFDO01BQ2hCLENBQUM7TUFDRHlKLFVBQVUsRUFBRUEsQ0FBQSxLQUFNO1FBQ2Q5TSxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3ZCRixjQUFjLENBQUMsSUFBSSxDQUFDO01BQ3hCLENBQUM7TUFDRGlOLFdBQVcsRUFBRUEsQ0FBQSxLQUFNO1FBQ2YxSyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7TUFDL0IsQ0FBQztNQUNEMkssZUFBZSxFQUFFQSxDQUFBLEtBQU07UUFDbkI3SyxlQUFlLENBQUMsS0FBSyxDQUFDO1FBQ3RCRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7TUFDaEMsQ0FBQztNQUNENEssV0FBVyxFQUFFQSxDQUFBLEtBQU07UUFDZnRLLHNCQUFzQixDQUFDLElBQUksQ0FBQztNQUNoQyxDQUFDO01BQ0R1SyxXQUFXLEVBQUVBLENBQUEsS0FBTTtRQUNmekssZUFBZSxDQUFDLEtBQUssQ0FBQztRQUN0QkUsc0JBQXNCLENBQUMsS0FBSyxDQUFDO01BQ2pDLENBQUM7TUFDRHdLLFdBQVcsRUFBRUEsQ0FBQSxLQUFNO1FBQ2YsSUFBSXZLLGtCQUFrQixDQUFDdUIsT0FBTyxJQUFJdkIsa0JBQWtCLENBQUN1QixPQUFPLENBQUNnSixXQUFXLEVBQUU7VUFDdEV2SyxrQkFBa0IsQ0FBQ3VCLE9BQU8sQ0FBQ2dKLFdBQVcsQ0FBQyxDQUFDO1FBQzVDO01BQ0osQ0FBQztNQUNEMUIsYUFBYSxFQUFFQSxDQUFBLEtBQU07UUFDakJBLGFBQWEsQ0FBQyxDQUFDO01BQ25CLENBQUM7TUFDRDJCLGFBQWEsRUFBRUEsQ0FBQSxLQUFNO1FBQ2pCdEIsb0JBQW9CLENBQUMsQ0FBQztNQUMxQixDQUFDO01BQ0R1QixTQUFTLEVBQUVBLENBQUEsS0FBTTtRQUNieE8sYUFBYSxDQUFDLElBQUksQ0FBQztNQUN2QixDQUFDO01BQ0R5TyxTQUFTLEVBQUVBLENBQUEsS0FBTTtRQUNiek8sYUFBYSxDQUFDLEtBQUssQ0FBQztNQUN4QjtJQUNKLENBQUU7SUFDT04sY0FBYyxFQUFFQSxjQUFlO0lBQy9CRyxZQUFZLEVBQUVBLFlBQWE7SUFDM0JFLFVBQVUsRUFBRUEsVUFBVztJQUN2QkksYUFBYSxFQUFFQSxhQUFjO0lBQzdCQyxhQUFhLEVBQUVBLGFBQWM7SUFDN0JFLFVBQVUsRUFBRUEsVUFBVztJQUN2QkUsVUFBVSxFQUFFQSxVQUFXO0lBQ3ZCRSxZQUFZLEVBQUVBLFlBQWE7SUFDM0IyQyxZQUFZLEVBQUVBLFlBQWE7SUFDM0JNLFlBQVksRUFBRUEsWUFBYTtJQUMzQi9DLFVBQVUsRUFBRUEsVUFBVztJQUN2QlksTUFBTSxFQUFFbkMsS0FBSyxDQUFDMkMsYUFBYSxDQUFDd0osSUFBSSxDQUFDNUUsUUFBUSxLQUFLRiwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsQ0FBQ0MsUUFBUztJQUMzRjlFLFVBQVUsRUFBRSxDQUFDekMsS0FBSyxDQUFDMkMsYUFBYSxDQUFDd0osSUFBSSxDQUFDdkosU0FBVTtJQUNoRG5CLGNBQWMsRUFBRUEsY0FBZTtJQUMvQmIsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCd0QsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCaUwsc0JBQXNCLEVBQUVyUCxLQUFLLENBQUMwSyxRQUFRLENBQUMyRSxzQkFBdUI7SUFDOURDLHNCQUFzQixFQUFFdFAsS0FBSyxDQUFDMEssUUFBUSxDQUFDNEUsc0JBQXVCO0lBQzlEeEcsU0FBUyxFQUFFOUksS0FBSyxDQUFDMkMsYUFBYSxDQUFDMEM7RUFBRyxDQUMxQyxDQUNBLENBQUMsRUFFRjlELFVBQVUsS0FBS3RDLE1BQU0sQ0FBQ0ksWUFBWSxpQkFDbENwRSxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUt2RCxLQUFLLEVBQUU7TUFDUmdGLEtBQUssRUFBRSxrQkFBa0I7TUFDekJDLE9BQU8sRUFBRSxNQUFNO01BQ2ZDLFFBQVEsRUFBRSxNQUFNO01BQ2hCMUIsS0FBSyxFQUFFLE1BQU07TUFDYkMsTUFBTSxFQUFFO0lBQ1osQ0FBRTtJQUFDSSxTQUFTLEVBQUU7RUFBb0IsR0FDN0JzQiw0QkFDQSxDQUFDLEVBR05uTyxVQUFVLEtBQUt0QyxNQUFNLENBQUNLLGdCQUFnQixpQkFDdENyRSxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUt2RCxLQUFLLEVBQUU7TUFDUmdGLEtBQUssRUFBRSxrQkFBa0I7TUFDekJDLE9BQU8sRUFBRSxNQUFNO01BQ2ZDLFFBQVEsRUFBRSxNQUFNO01BQ2hCMUIsS0FBSyxFQUFFLE1BQU07TUFDYkMsTUFBTSxFQUFFO0lBQ1osQ0FBRTtJQUFDSSxTQUFTLEVBQUU7RUFBb0IsZ0JBQzlCblQsTUFBQSxDQUFBdUIsT0FBQSxDQUFBc1IsYUFBQSxjQUNLNEIsNEJBQ0EsQ0FDSixDQUFDLEVBR043TSxlQUFlLElBQUlyQyxZQUFZLElBQUltRCxtQkFBbUIsS0FDbERwQyxVQUFVLEtBQUt0QyxNQUFNLENBQUNFLE9BQU8sSUFBSW9DLFVBQVUsS0FBS3RDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLGlCQUNqRWpFLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUEsQ0FBQ3BTLGdCQUFBLENBQUFjLE9BQWU7SUFBQ3lELEdBQUcsRUFBRXlFLGtCQUFtQjtJQUN4QmxFLFlBQVksRUFBRUEsWUFBYTtJQUMzQm1QLElBQUksRUFBRXBOLDBCQUEyQjtJQUNqQ3FOLE1BQU0sRUFBRTVQLEtBQUssQ0FBQzRQLE1BQU87SUFDckJ6TyxVQUFVLEVBQUVBLFVBQVc7SUFDdkJGLFVBQVUsRUFBRUEsVUFBVztJQUN2QjRPLFlBQVksRUFBRTdQLEtBQUssQ0FBQzJDLGFBQWEsQ0FBQytLLEtBQU07SUFDeENvQyxRQUFRLEVBQUU5UCxLQUFLLENBQUMyQyxhQUFhLENBQUMySSxHQUFJO0lBQ2xDeUUsaUJBQWlCLEVBQUUvUCxLQUFLLENBQUMyQyxhQUFhLENBQUNvTixpQkFBa0I7SUFDekRqSCxTQUFTLEVBQUU5SSxLQUFLLENBQUMyQyxhQUFhLENBQUMwQyxFQUFHO0lBQ2xDMUIsbUJBQW1CLEVBQUVBLG1CQUFvQjtJQUN6Q3FNLFdBQVcsRUFBRUEsQ0FBQSxLQUFNO01BQ2Y7SUFBQSxDQUNGO0lBQ0ZuTyxVQUFVLEVBQUVBLFVBQVc7SUFDdkJOLFVBQVUsRUFBRUEsVUFBVztJQUN2QlksTUFBTSxFQUFFQSxNQUFPO0lBQ2ZFLGFBQWEsRUFBRUEsYUFBYztJQUM3QjZCLGtCQUFrQixFQUFFQSxrQkFBbUI7SUFDdkMrTCxjQUFjLEVBQUd4TyxjQUFjLElBQUtDLGlCQUFpQixDQUFDRCxjQUFjLENBQUU7SUFDdEV5TyxhQUFhLEVBQUVBLENBQUEsS0FBTTtNQUNqQmpNLGVBQWUsQ0FBQyxLQUFLLENBQUM7TUFDdEJFLHFCQUFxQixDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFFO0lBQ0ZnTSxjQUFjLEVBQUVBLENBQUEsS0FBTTtNQUNsQmxNLGVBQWUsQ0FBQyxJQUFJLENBQUM7TUFDckJFLHFCQUFxQixDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFFO0lBQ0ZLLG1CQUFtQixFQUFFQSxtQkFBb0I7SUFDekM0TCxxQkFBcUIsRUFBRUEsQ0FBQSxLQUFNO01BQ3pCN0wsZUFBZSxDQUFDLElBQUksQ0FBQztNQUNyQkUsc0JBQXNCLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUU7SUFDRjRMLG9CQUFvQixFQUFFQSxDQUFBLEtBQU07TUFDeEI5TCxlQUFlLENBQUMsS0FBSyxDQUFDO01BQ3RCRSxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBRTtJQUNGSCxZQUFZLEVBQUVBLFlBQWE7SUFDM0I3QixVQUFVLEVBQUVBLFVBQVc7SUFDdkJJLGVBQWUsRUFBRUEsZUFBZ0I7SUFDakNtQixZQUFZLEVBQUVBLFlBQWE7SUFDM0IzQyxZQUFZLEVBQUVBLFlBQWE7SUFDM0JnQyxxQkFBcUIsRUFBRUEscUJBQXNCO0lBQzdDdEIsdUJBQXVCLEVBQUVBLHVCQUF3QjtJQUNqRHVPLG1CQUFtQixFQUFHQyxNQUFNLElBQUs7TUFDN0J2UCxnQkFBZ0IsQ0FBQzZKLGNBQUssQ0FBQ0MsTUFBTSxDQUFDeUYsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBRTtJQUNGQyxlQUFlLEVBQUdoSixXQUFXLElBQUs7TUFDOUJvRixnQ0FBZ0MsQ0FBQ3BGLFdBQVcsQ0FBQ0ssTUFBTSxFQUFFLElBQUksRUFBRUwsV0FBVyxDQUFDdkcsVUFBVSxDQUFDO0lBQ3RGLENBQUU7SUFDRndQLGVBQWUsRUFBR2pKLFdBQVcsSUFBSztNQUM5Qm9GLGdDQUFnQyxDQUFDcEYsV0FBVyxDQUFDSyxNQUFNLEVBQUVMLFdBQVcsQ0FBQ3JHLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDdEY7RUFBRSxDQUNsQixDQUVKLENBQ0osQ0FBQyxFQUVGUSxXQUFXLElBQUlFLFVBQVUsSUFBSU4sVUFBVSxLQUFLdEMsTUFBTSxDQUFDRSxPQUFPLGlCQUMxRGxFLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS00sU0FBUyxFQUFFdEosWUFBWSxHQUFHLHdCQUF3QixHQUFHO0VBQTJCLGdCQUNqRjdKLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUEsQ0FBQy9SLGNBQUEsQ0FBQVMsT0FBYTtJQUNWa1UsWUFBWSxFQUFHcFUsQ0FBQyxJQUFLO01BQ2pCc0YsY0FBYyxDQUFDLEtBQUssQ0FBQztNQUNyQkUsYUFBYSxDQUFDLElBQUksQ0FBQztJQUN2QixDQUFFO0lBQ0Y0TCxLQUFLLEVBQUU3TDtFQUFXLGdCQUVsQjVHLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUEsQ0FBQzlSLGVBQUEsQ0FBQVEsT0FBYztJQUNYc0gsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCM0IsTUFBTSxFQUFFQSxNQUFPO0lBQ2ZFLGFBQWEsRUFBRUEsYUFBYztJQUM3QnNPLEdBQUcsRUFBRTlPLFVBQVc7SUFDaEJpSCxTQUFTLEVBQUU5SSxLQUFLLENBQUMyQyxhQUFhLENBQUMwQyxFQUFHO0lBQ2xDN0UsWUFBWSxFQUFFQSxZQUFhO0lBQzNCZ1EsZUFBZSxFQUFHaEosV0FBVyxJQUFLO01BQzlCb0YsZ0NBQWdDLENBQUNwRixXQUFXLENBQUNLLE1BQU0sRUFBRSxJQUFJLEVBQUVMLFdBQVcsQ0FBQ3ZHLFVBQVUsQ0FBQztJQUN0RixDQUFFO0lBQ0Z3UCxlQUFlLEVBQUdqSixXQUFXLElBQUs7TUFDOUJvRixnQ0FBZ0MsQ0FBQ3BGLFdBQVcsQ0FBQ0ssTUFBTSxFQUFFTCxXQUFXLENBQUNyRyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ3RGO0VBQUUsQ0FDTCxDQUNVLENBQ2QsQ0FFUixDQUFDLGVBQ05sRyxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUt2RCxLQUFLLEVBQUU7TUFDUjRELFFBQVEsRUFBRSxVQUFVO01BQ3BCeUMsS0FBSyxFQUFFLE1BQU07TUFDYkMsTUFBTSxFQUFFO0lBQ1o7RUFBRSxnQkFDRTVWLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUEsQ0FBQ2xTLE1BQUEsQ0FBQVksT0FBSztJQUNGc1UsT0FBTyxFQUFFLFNBQVU7SUFDbkJDLElBQUksRUFBRTVOLFlBQWE7SUFDbkI2TixVQUFVLEVBQUU7RUFBTSxnQkFFbEIvVixNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUd2RCxLQUFLLEVBQUU7TUFBQ0MsTUFBTSxFQUFFO0lBQUM7RUFBRSxHQUFDLG9CQUFnQixDQUNwQyxDQUFDLGVBQ1J2UCxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBLENBQUNsUyxNQUFBLENBQUFZLE9BQUs7SUFDRnNVLE9BQU8sRUFBRSxRQUFTO0lBQ2xCQyxJQUFJLEVBQUU5TixjQUFjLEtBQUssSUFBSztJQUM5QmdPLFdBQVc7SUFDWEMsT0FBTyxFQUFFQSxDQUFBLEtBQU1oTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUU7SUFDdkM4TixVQUFVLEVBQUU7RUFBTSxnQkFFbEIvVixNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUd2RCxLQUFLLEVBQUU7TUFBQ0MsTUFBTSxFQUFFO0lBQUM7RUFBRSxHQUFFdkgsY0FBa0IsQ0FDdkMsQ0FBQyxlQUNSaEksTUFBQSxDQUFBdUIsT0FBQSxDQUFBc1IsYUFBQSxDQUFDbFMsTUFBQSxDQUFBWSxPQUFLO0lBQ0ZzVSxPQUFPLEVBQUUsTUFBTztJQUNoQkMsSUFBSSxFQUFFaE8sZUFBZSxLQUFLLElBQUs7SUFDL0JpTyxVQUFVLEVBQUU7RUFBTSxnQkFFbEIvVixNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUd2RCxLQUFLLEVBQUU7TUFBQ2dGLEtBQUssRUFBRTtJQUEwQjtFQUFFLEdBQUV4TSxlQUFtQixDQUNoRSxDQUFDLGVBQ1I5SCxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBLENBQUNsUyxNQUFBLENBQUFZLE9BQUs7SUFDRnNVLE9BQU8sRUFBRSxNQUFPO0lBQ2hCQyxJQUFJLEVBQUV4TixXQUFXLEtBQUssSUFBSztJQUMzQnlOLFVBQVUsRUFBRTtFQUFNLGdCQUVsQi9WLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS00sU0FBUyxFQUFFLEtBQU07SUFBQzdELEtBQUssRUFBRTtNQUMxQitELFlBQVksRUFBRSxpQkFBaUI7TUFDL0I2QyxhQUFhLEVBQUU7SUFDbkI7RUFBRSxnQkFDRWxXLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS00sU0FBUyxFQUFFO0VBQU0sZ0JBQ2xCblQsTUFBQSxDQUFBdUIsT0FBQSxDQUFBc1IsYUFBQTtJQUFLTSxTQUFTLEVBQUU7RUFBTSxnQkFDbEJuVCxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBLDJCQUNJN1MsTUFBQSxDQUFBdUIsT0FBQSxDQUFBc1IsYUFBQSxDQUFDeFMsS0FBQSxDQUFBa0IsT0FBSTtJQUFDNkksRUFBRSxFQUFFO0VBQWMsQ0FBQyxDQUN4QixDQUFDLGVBQ05wSyxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUtNLFNBQVMsRUFBRTtFQUFNLGdCQUNsQm5ULE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBR3ZELEtBQUssRUFBRTtNQUFDZ0YsS0FBSyxFQUFFO0lBQTBCO0VBQUUsR0FBRTlMLFVBQWMsQ0FDN0QsQ0FDSixDQUNKLENBQ0osQ0FBQyxlQUNOeEksTUFBQSxDQUFBdUIsT0FBQSxDQUFBc1IsYUFBQTtJQUFLTSxTQUFTLEVBQUUsS0FBTTtJQUFDN0QsS0FBSyxFQUFFO01BQUM2RyxTQUFTLEVBQUU7SUFBSztFQUFFLGdCQUM3Q25XLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUE7SUFBS00sU0FBUyxFQUFFO0VBQU0sZ0JBQUNuVCxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUd2RCxLQUFLLEVBQUU7TUFBQ2dGLEtBQUssRUFBRTtJQUEwQjtFQUFFLEdBQUVoTSxXQUFlLENBQU0sQ0FDM0YsQ0FDRixDQUNOLENBQUMsZUFDTnRJLE1BQUEsQ0FBQXVCLE9BQUEsQ0FBQXNSLGFBQUEsQ0FBQzdTLE1BQUEsQ0FBQW9XLFFBQVEscUJBRUxwVyxNQUFBLENBQUF1QixPQUFBLENBQUFzUixhQUFBO0lBQUt2RCxLQUFLLEVBQUU7TUFBQytHLE9BQU8sRUFBRTtJQUFNO0VBQUUsZ0JBQzFCclcsTUFBQSxDQUFBdUIsT0FBQSxDQUFBc1IsYUFBQTtJQUNJeUQsTUFBTSxFQUFFLEtBQU07SUFBQy9DLEtBQUs7SUFDcEJnRCxXQUFXO0lBQUNDLFFBQVE7SUFBQ3hSLEdBQUcsRUFBRUMsU0FBVTtJQUNwQ3FLLEtBQUssRUFBRTtNQUNId0QsS0FBSyxFQUFFLE9BQU87TUFDZEMsTUFBTSxFQUFFO0lBQ1o7RUFBRSxDQUNMLENBQ0EsQ0FDQyxDQUNULENBQUM7QUFHZCxDQUFDLENBQUMsQ0FBQztBQUFDLElBQUEwRCxRQUFBLEdBQUFDLE9BQUEsQ0FBQW5WLE9BQUEsR0FFV29ELFlBQVkiLCJpZ25vcmVMaXN0IjpbXX0=