my-orders-tickets-widget 1.0.0-beta.14 → 1.0.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1769,7 +1769,7 @@ __webpack_require__.r(__webpack_exports__);
1769
1769
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1770
1770
  /* harmony import */ var _AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./AttendeeStatus */ "./src/components/OrdersList/AttendeeStatus.js");
1771
1771
  /* harmony import */ var _TicketDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../TicketDetail */ "./src/components/TicketDetail/index.js");
1772
- /* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
1772
+ /* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
1773
1773
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1774
1774
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__);
1775
1775
 
@@ -1839,10 +1839,7 @@ const OrderListTickets = _ref2 => {
1839
1839
  isRefundable,
1840
1840
  isUnassigned,
1841
1841
  isIncomplete
1842
- } = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_13__.useTicketDetails)({
1843
- ticket,
1844
- summit
1845
- });
1842
+ } = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_13__.useTicketDetails)(ticket);
1846
1843
  const [openTicket, setOpenTicket] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
1847
1844
  const reassignDate = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_9__.getSummitReassignDate)(summit);
1848
1845
  const isReassignable = reassignDate > now;
@@ -4235,13 +4232,13 @@ const TicketDetail = _ref => {
4235
4232
  const answers = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_12__.transformAnwersFormat)(val);
4236
4233
  return dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_10__.saveTicketDetails)(ticket, answers)).then(() => {
4237
4234
  setSaveMessage({
4238
- title: "Ticket Saved!",
4239
- description: "ticket saved successfully"
4235
+ title: t("ticket_detail.saving_success"),
4236
+ description: t("ticket_detail.saving_success_description")
4240
4237
  });
4241
4238
  return Promise.resolve();
4242
4239
  }).catch(err => {
4243
4240
  setSaveMessage({
4244
- title: "Error saving ticket.",
4241
+ title: t("ticket_detail.saving_error"),
4245
4242
  description: err.toString()
4246
4243
  });
4247
4244
  return Promise.reject();
@@ -4368,10 +4365,10 @@ const TicketDetail = _ref => {
4368
4365
  };
4369
4366
  TicketDetail.propTypes = {
4370
4367
  summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
4371
- onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
4372
4368
  ticketId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
4373
4369
  orderId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
4374
- ownerId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number)
4370
+ ownerId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
4371
+ onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
4375
4372
  };
4376
4373
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketDetail);
4377
4374
 
@@ -4395,12 +4392,10 @@ __webpack_require__.r(__webpack_exports__);
4395
4392
  /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
4396
4393
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
4397
4394
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
4398
- /* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
4399
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
4400
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketStatus/styles.module.scss");
4401
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
4402
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
4403
-
4395
+ /* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
4396
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketStatus/styles.module.scss");
4397
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
4398
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
4404
4399
 
4405
4400
 
4406
4401
 
@@ -4408,8 +4403,8 @@ __webpack_require__.r(__webpack_exports__);
4408
4403
 
4409
4404
 
4410
4405
 
4411
- function TicketStatus(_ref) {
4412
- var _ticket$refund_reques;
4406
+ const TicketStatus = _ref => {
4407
+ var _ticket$refundRequest;
4413
4408
  let {
4414
4409
  ticket
4415
4410
  } = _ref;
@@ -4417,48 +4412,50 @@ function TicketStatus(_ref) {
4417
4412
  t
4418
4413
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
4419
4414
  const isActive = ticket.is_active;
4420
- const refund_requests = (_ticket$refund_reques = ticket.refund_requests) === null || _ticket$refund_reques === void 0 ? void 0 : _ticket$refund_reques.find(r => r.status === "Requested");
4421
- const ticket_status_incomplete = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_4__.getTicketStatusKey)(ticket) === _utils_constants__WEBPACK_IMPORTED_MODULE_5__.STATUS_INCOMPLETE;
4422
- const ticket_unassigned = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_4__.getTicketStatusKey)(ticket) === _utils_constants__WEBPACK_IMPORTED_MODULE_5__.STATUS_UNASSIGNED;
4423
- const ticket_complete = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_4__.getTicketStatusKey)(ticket) === _utils_constants__WEBPACK_IMPORTED_MODULE_5__.STATUS_COMPLETE;
4424
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Container, {
4425
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.ticketStatusContainer,
4426
- children: isActive ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
4427
- children: [refund_requests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4415
+ const refundRequests = (_ticket$refundRequest = ticket.refundRequests) === null || _ticket$refundRequest === void 0 ? void 0 : _ticket$refundRequest.find(r => r.status === "Requested");
4416
+ const {
4417
+ isIncomplete,
4418
+ isUnassigned,
4419
+ isComplete
4420
+ } = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_4__.useTicketDetails)(ticket);
4421
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Container, {
4422
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketStatusContainer,
4423
+ children: isActive ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {
4424
+ children: [refundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4428
4425
  role: "button",
4429
4426
  "aria-label": "ticket status refund requested",
4430
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonRefundRequested),
4427
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonRefundRequested),
4431
4428
  children: t("ticket_status.status_refund_requested")
4432
- }), ticket_status_incomplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4429
+ }), isIncomplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4433
4430
  role: "button",
4434
4431
  "aria-label": "ticket status incomplete",
4435
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonIncomplete),
4432
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonIncomplete),
4436
4433
  children: t("ticket_status.status_incomplete")
4437
- }), ticket_unassigned && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4434
+ }), isUnassigned && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4438
4435
  role: "button",
4439
4436
  "aria-label": "ticket status unassigned",
4440
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonUnassigned),
4437
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonUnassigned),
4441
4438
  children: t("ticket_status.status_unassigned")
4442
- }), ticket_complete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4439
+ }), isComplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4443
4440
  role: "button",
4444
4441
  "aria-label": "ticket status complete",
4445
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonComplete),
4442
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonComplete),
4446
4443
  children: t("ticket_status.status_complete")
4447
4444
  })]
4448
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4445
+ }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4449
4446
  role: "button",
4450
4447
  "aria-label": "ticket status cancelled",
4451
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.buttonCancelled),
4448
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonCancelled),
4452
4449
  children: t("ticket_status.status_cancelled")
4453
4450
  })
4454
4451
  });
4455
- }
4452
+ };
4456
4453
  TicketStatus.propTypes = {
4457
4454
  ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
4458
4455
  owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
4459
4456
  status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
4460
4457
  }),
4461
- refund_requests: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
4458
+ refundRequests: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
4462
4459
  })
4463
4460
  };
4464
4461
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketStatus);
@@ -4484,7 +4481,7 @@ const STATUS_INCOMPLETE = "Incomplete";
4484
4481
  const STATUS_CANCELLED = "Cancelled";
4485
4482
  const STATUS_UNASSIGNED = "Unassigned";
4486
4483
  const useTicketDetails = ticket => {
4487
- var _ticket$promo_code, _ticket$owner3, _ticket$owner4;
4484
+ var _ticket$ticket_type, _ticket$promo_code, _ticket$owner3, _ticket$owner4;
4488
4485
  const getStatus = () => {
4489
4486
  var _ticket$owner, _ticket$owner2;
4490
4487
  if (!ticket.is_active) return STATUS_CANCELLED;
@@ -4496,7 +4493,7 @@ const useTicketDetails = ticket => {
4496
4493
  const status = getStatus();
4497
4494
  const isActive = ticket.is_active && status !== STATUS_CANCELLED;
4498
4495
  const isRefundable = ticket.final_amount > 0 && ticket.final_amount > ticket.refunded_amount;
4499
- const allowsDelegate = (ticket.ticket_type.allows_to_delegate || ((_ticket$promo_code = ticket.promo_code) === null || _ticket$promo_code === void 0 ? void 0 : _ticket$promo_code.allows_to_delegate)) && status !== STATUS_UNASSIGNED && !((_ticket$owner3 = ticket.owner) !== null && _ticket$owner3 !== void 0 && (_ticket$owner3 = _ticket$owner3.manager) !== null && _ticket$owner3 !== void 0 && _ticket$owner3.id) && !((_ticket$owner4 = ticket.owner) !== null && _ticket$owner4 !== void 0 && _ticket$owner4.manager_id);
4496
+ const allowsDelegate = ((ticket === null || ticket === void 0 || (_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.allows_to_delegate) || (ticket === null || ticket === void 0 || (_ticket$promo_code = ticket.promo_code) === null || _ticket$promo_code === void 0 ? void 0 : _ticket$promo_code.allows_to_delegate)) && status !== STATUS_UNASSIGNED && !((_ticket$owner3 = ticket.owner) !== null && _ticket$owner3 !== void 0 && (_ticket$owner3 = _ticket$owner3.manager) !== null && _ticket$owner3 !== void 0 && _ticket$owner3.id) && !((_ticket$owner4 = ticket.owner) !== null && _ticket$owner4 !== void 0 && _ticket$owner4.manager_id);
4500
4497
  const isComplete = status === STATUS_COMPLETE;
4501
4498
  const isUnassigned = status === STATUS_UNASSIGNED;
4502
4499
  const isIncomplete = status === STATUS_INCOMPLETE;
@@ -4718,15 +4715,20 @@ const WidgetReducer = function () {
4718
4715
  case _actions__WEBPACK_IMPORTED_MODULE_2__.UPDATE_TICKET:
4719
4716
  {
4720
4717
  const ticketData = payload.response;
4721
- state.memberOrders.forEach(order => {
4722
- order.memberTickets = order.memberTickets.map(ticket => {
4718
+ const newOrders = state.memberOrders.map(order => {
4719
+ const newTickets = order.memberTickets.map(ticket => {
4723
4720
  if (ticket.id === ticketData.id) {
4724
4721
  return ticketData;
4725
4722
  }
4726
4723
  return ticket;
4727
4724
  });
4725
+ return _objectSpread(_objectSpread({}, order), {}, {
4726
+ memberTickets: newTickets
4727
+ });
4728
+ });
4729
+ return _objectSpread(_objectSpread({}, state), {}, {
4730
+ memberOrders: newOrders
4728
4731
  });
4729
- return state;
4730
4732
  }
4731
4733
  default:
4732
4734
  return state;
@@ -6113,7 +6115,7 @@ module.exports = require("yup");
6113
6115
  \**********************************/
6114
6116
  /***/ ((module) => {
6115
6117
 
6116
- module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish"},"labels":{"tickets":"Tickets","summary":"Summary"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar)."}}');
6118
+ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish"},"labels":{"tickets":"Tickets","summary":"Summary"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"}}');
6117
6119
 
6118
6120
  /***/ }),
6119
6121
 
@@ -6325,4 +6327,4 @@ MyOrdersMyTicketsWidget.propTypes = {
6325
6327
  /******/ })()
6326
6328
  ;
6327
6329
  });
6328
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNpRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSGpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JqTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3dqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QnhqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM0Ujs7Ozs7Ozs7Ozs7Ozs7O0FDYjVSO0FBQ0E7QUFDMEI7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGMUI7QUFDQTtBQUNBO0FBQzRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSDVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNzYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckJ0YTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTs7Ozs7Ozs7Ozs7QUNKL0U7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7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VztNQUNWUyxZQUFZLEVBQUVOLGdCQUFpQjtNQUMvQjFKLE9BQU8sRUFBRSxJQUFLO01BQ2Q2QyxTQUFTLEVBQUVBLFNBQVU7TUFBQXZxQixRQUFBLGVBRXJCaEIsdURBQUEsQ0FBQzJVLCtEQUFvQjtRQUFDdUIsV0FBVztRQUFBbFYsUUFBQSxnQkFDL0JsQixzREFBQSxDQUFDcUMsOENBQUc7VUFBQ2YsRUFBRSxFQUFFO1lBQUUwRCxPQUFPLEVBQUU7Y0FBRWtDLEVBQUUsRUFBRSxDQUFDO2NBQUUwQyxFQUFFLEVBQUUsQ0FBQztjQUFFQyxFQUFFLEVBQUU7WUFBRTtVQUFFLENBQUU7VUFBQTNJLFFBQUEsZUFDNUNsQixzREFBQTtZQUFBa0IsUUFBQSxFQUFLVixDQUFDLENBQUMsY0FBYztVQUFDLENBQUs7UUFBQyxDQUN6QixDQUFDLGVBQ05SLHNEQUFBLENBQUM2SSxtRUFBZTtVQUNkK2hCLFFBQVEsRUFBRUEsUUFBUztVQUNuQnlILFlBQVksRUFBRUEsWUFBYTtVQUMzQjE2QixNQUFNLEVBQUVBLE1BQU87VUFDZndCLFVBQVUsRUFBRUE7UUFBVyxDQUN4QixDQUFDO01BQUEsQ0FDa0I7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEaTVCLHVCQUF1QixDQUFDcHdCLFNBQVMsR0FBRztFQUNsQzRvQixRQUFRLEVBQUV2ckIsMERBQWdCO0VBQzFCZ3pCLFlBQVksRUFBRWh6QiwwREFBZ0I7RUFDOUIxSCxNQUFNLEVBQUUwSCwwREFBZ0I7RUFDeEJsRyxVQUFVLEVBQUVrRywwREFBZ0I7RUFDNUJ6SCxJQUFJLEVBQUV5SCwwREFBZ0I7RUFDdEJzckIsUUFBUSxFQUFFdHJCLDBEQUFnQjtFQUMxQnhCLGFBQWEsRUFBRXdCLHdEQUFjNEM7QUFDL0IsQ0FBQztBQUVELGlFQUFlbXdCLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0RhdGVwaWNrZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXVsdGlTdGVwU2xpZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZWxlZ2F0aW9uRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXVsdGlTdGVwU2xpZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EcmF3ZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJkYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgT05FX1BBR0VfTkVYVCxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgRklGVFlfUEVSX1BBR0Vcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTID0gXCJHRVRfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUi9TT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmopID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9W10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX09QCR7ZmlsdGVyT2JqLnZhbHVlfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+XG4gIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCI7XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9LFxuICAgIG5leHQgPSBmYWxzZVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2U6IG5leHQgPyBwYWdlICsgT05FX1BBR0VfTkVYVCA6IHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHsgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXNlclN0YXRlOiB7IHVzZXJQcm9maWxlIH0sXG4gICAgICBzdW1taXRcbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGlmICghdXNlclByb2ZpbGUuaWQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZmlsdGVyOiBcInN0YXR1cz09UGFpZFwiLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm9yZGVyLmlkLG9yZGVyLm93bmVyX2ZpcnN0X25hbWUsb3JkZXIub3duZXJfbGFzdF9uYW1lLG9yZGVyLm93bmVyX2VtYWlsLG93bmVyLmZpcnN0X25hbWUsb3duZXIubGFzdF9uYW1lLG93bmVyLnN0YXR1c1wiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoeyBvcmRlcklkLCBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJyZWZ1bmRfcmVxdWVzdHMsdGlja2V0X3R5cGVcIixcbiAgICAgIGZpZWxkczogXCJyZWZ1bmRfcmVxdWVzdHMuc3RhdHVzXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kQnVsa1RpY2tldHMgPVxuICAoeyB0aWNrZXRzIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KFBST01JU0VfQkFUQ0hfTElNSVQpO1xuICAgIGNvbnN0IGFsbFJlZnVuZFRpY2tldENhbGxzID0gdGlja2V0cy5tYXAoKHRpY2tldCkgPT5cbiAgICAgIGxpbWl0KCgpID0+IGRpc3BhdGNoKHJlZnVuZFRpY2tldCh7IHRpY2tldCB9KSkpXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoWy4uLmFsbFJlZnVuZFRpY2tldENhbGxzXSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkID0gcmVzXG4gICAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXNwb25zZT8ucmVmdW5kX3JlcXVlc3RzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCgocikgPT4gci5yZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiBlKTtcbiAgfTtcblxuLy8gdXBkYXRlIHRoZSB0aWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Vzc2Z1bGx5IHJlZnVuZGVkXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9XG4gICh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKSA9PiAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCkodGlja2V0c1JlZnVuZFJlcXVlc3RlZClcbiAgICApO1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoYXR0ZW5kZWVJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgeyBBZGFwdGVyRGF5anMgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvblByb3ZpZGVyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIjtcbmltcG9ydCB7IERhdGVQaWNrZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0RBVEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2ljRGF0ZVBpY2tlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSBkYXlqcygpO1xuICBjb25zdCBbZGF0ZVZhbHVlLCBzZXREYXRlVmFsdWVdID0gdXNlU3RhdGUobm93KTtcbiAgY29uc3Qgb25EYXRlQ2hhbmdlID0gKHZhbCkgPT4ge1xuICAgIHNldERhdGVWYWx1ZSh2YWwpO1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwuJGQpO1xuICAgIGNvbnN0IHsgbG93ZXIsIHVwcGVyIH0gPSBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMoZGF0ZSk7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgdHlwZTogRklMVEVSX1ZBUl9EQVRFLFxuICAgICAgbmFtZTogXCJjcmVhdGVkXCIsXG4gICAgICBkYXRlLFxuICAgICAgbG93ZXIsXG4gICAgICB1cHBlclxuICAgIH0pO1xuICB9O1xuICBjb25zdCBvblJlc2V0QWN0aW9uID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICBzZXREYXRlVmFsdWUobm93KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJEYXRlTGFiZWx9Pnt0KFwiZmlsdGVyLnB1cmNoYXNlZF9vblwiKX08L2Rpdj5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVQaWNrZXJDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlcGlja2VyQ2xvc2V9XG4gICAgICAgICAgb25DbGljaz17b25SZXNldEFjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICAgPExvY2FsaXphdGlvblByb3ZpZGVyIGRhdGVBZGFwdGVyPXtBZGFwdGVyRGF5anN9PlxuICAgICAgICAgIDxEYXRlUGlja2VyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYWxlbmRhckRpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGVWYWx1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0xvY2FsaXphdGlvblByb3ZpZGVyPlxuICAgICAgPC9TdGFjaz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuQmFzaWNEYXRlUGlja2VyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgQmFzaWNEYXRlUGlja2VyIGZyb20gXCIuL0RhdGVwaWNrZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIHsvKiogY3VycmVudGx5IGp1c3Qgc2hvd2luZyBcIjFcIiBiZWNhdXNlIHdlJ3JlIGN1cnJlbnRseSBvbmx5IGZpbHRlcmluZyBvbmUgY3JpdGVyaWEgLSBjcmVhdGVkIGRhdGUgKi99XG4gICAgICAgIHtmaWx0ZXJOdW1BY3RpdmUgJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJOdW1BY3RpdmV9PjE8L2Rpdj59XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dEYXRlUGlja2VyIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEJhc2ljRGF0ZVBpY2tlclxuICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcbiAgICAgICAgICAgIG9uUmVzZXQoKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZShmYWxzZSk7XG4gICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBvbkZpbHRlcihmaWx0ZXIpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKHRydWUpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5mdW5jdGlvbiBTZWFyY2goeyBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBuYW1lOiBcIm51bWJlclwiLFxuICAgICAgICB0eXBlOiBGSUxURVJfVkFSX09SREVSX05VTUJFUlxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICAgIG9uUmVzZXQoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufVxuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBTb3J0KHsgb25Tb3J0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfT5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJkZXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiYXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlclNvcnRTZWFyY2goeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIHJldHVybiAoXG4gICAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgeHM9ezZ9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBnYXA9ezJ9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn1cblxuRmlsdGVyU29ydFNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyU29ydFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgRHJhd2VyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gTXVsdGlTdGVwU2xpZGVyKHsgY2hpbGRyZW4sIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkge1xuICByZXR1cm4gKFxuICAgIDxEcmF3ZXJcbiAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlU2xpZGVyfVxuICAgICAgUGFwZXJQcm9wcz17e1xuICAgICAgICBzeDoge1xuICAgICAgICAgIHdpZHRoOiBcIjYwJVwiXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgPlxuICAgICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy5tdWx0aXN0ZXBDb250YWluZXJ9PlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ2xvc2VJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2VTbGlkZXJ9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1zbGlkZXJcIlxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICA8L0RyYXdlcj5cbiAgKTtcbn1cblxuTXVsdGlTdGVwU2xpZGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpU3RlcFNsaWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICBvcmRlcnNfdG90YWxcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbc2VhcmNoTmV4dCwgc2V0U2VhcmNoTmV4dF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlKHt9KTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U2VhcmNoTmV4dChmYWxzZSk7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2U6IG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgbmV4dDogc2VhcmNoTmV4dCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocmVzKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHJlcy5yZXNwb25zZT8uZGF0YT8ubGVuZ3RoID4gb3JkZXJzX3Blcl9wYWdlICYmXG4gICAgICAgIG1lbWJlck9yZGVycy5sZW5ndGggPT09IG9yZGVyc190b3RhbFxuICAgICAgKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICB9LCBbZmlsdGVyLCBzb3J0LCBzZWFyY2hOZXh0XSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnMubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IHNldFNlYXJjaE5leHQodHJ1ZSl9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeVRhYmxlKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0cyxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSAke1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICAgICAgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWRcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnkoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvblJlZnVuZENsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdFxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEF0dGVuZGVlU3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHtcIiBcIn1cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn1cblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHtcbiAgdGlja2V0cyxcbiAgdG90YWwsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHt0aWNrZXRzPy5sZW5ndGggPj0gaXRlbXNUb0Rpc3BsYXkgJiYgdGlja2V0cz8ubGVuZ3RoICE9PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgICAgICAgICAgICAgICAgICAgICBpc0luY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkLFxuICAgICAgICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlLFxuICAgICAgICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrXG4gICAgICAgICAgICAgICAgICAgIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259PlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufSBvbkNsaWNrPXtvbk9wZW5DbGlja30+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHMoeyB0aWNrZXQsIHN1bW1pdCB9KTtcbiAgY29uc3QgW29wZW5UaWNrZXQsIHNldE9wZW5UaWNrZXRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9ezh9XG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiBpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogMiwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlfVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXsoKSA9PiBzZXRPcGVuVGlja2V0KHRpY2tldCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgdGlja2V0SWQ9e29wZW5UaWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXtvcGVuVGlja2V0Py5vcmRlcl9pZH1cbiAgICAgICAgb3duZXJJZD17b3BlblRpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRPcGVuVGlja2V0KG51bGwpfVxuICAgICAgLz5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuZnVuY3Rpb24gT3JkZXJOdW1iZXIoe1xuICBudW1iZXIsXG4gIGNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gZmFsc2UsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSB7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Tm9Db250YWluZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge251bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjb3B5ICYmIChcbiAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG51bWJlcil9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuT3JkZXJOdW1iZXIucHJvcFR5cGVzID0ge1xuICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlck51bWJlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFRhYlBhbmVsKHByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgb3JkZXIsXG4gIHRvdGFsLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3JlZnVuZFJlcXVlc3RlZCwgc2V0UmVmdW5kUmVxdWVzdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHNldFJlZnVuZFJlcXVlc3RlZCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSB0aWNrZXRzLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBjYW5jZWxUaWNrZXRzVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdEFsbFRpY2tldHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmdW5kYWJsZVRpY2tldHMgPSB0aWNrZXRzLmZpbHRlcihcbiAgICAgICh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpID09PSB0cnVlXG4gICAgKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQocmVmdW5kYWJsZVRpY2tldHMpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgdGV4dENvbG9yPVwiIzAwMFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgICBUYWJJbmRpY2F0b3JQcm9wcz17e1xuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmRSZXF1ZXN0ZWQgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgICAgPHNwYW4+e3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF90aWNrZXRfcmVmdW5kXCIpfTwvc3Bhbj5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxUaWNrZXRzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2FsbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kQnV0dG9uc31cbiAgICAgICAgICAgICAgb25DbGljaz17Y2FuY2VsVGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2NhbmNlbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0U3VibWl0UmVxdWVzdChmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldE9yZGVyVGlja2V0cywgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3QocHJvcHMpIHtcbiAgY29uc3QgeyBzdW1taXQsIG9yZGVyIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgcGVyX3BhZ2UsIGxhc3RfcGFnZSwgbWVtYmVyT3JkZXJzIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuICBjb25zdCBmZXRjaFRpY2tldHNCeU9yZGVyID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgY3VycmVudF9wYWdlOiBsYXN0X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlXG4gICAgICB9KVxuICAgICkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hUaWNrZXRzQnlPcmRlcigpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMSxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e29yZGVyLm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e2dldE9yZGVyVGlja2V0cyhtZW1iZXJPcmRlcnMsIG9yZGVyLmlkKX1cbiAgICAgICAgICB0b3RhbD17b3JkZXIudGlja2V0c190b3RhbH1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9e2RldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IERlbGV0ZU91dGxpbmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFJlZnVuZFJlcXVlc3RlZFRpY2tldCh7IHRpY2tldCwgb25SZW1vdmUgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8RGVsZXRlT3V0bGluZUljb25cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlbW92ZS1idXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGVsZXRlSWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUmVtb3ZlKHRpY2tldCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uUmVtb3ZlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgTXVsdGlTdGVwU2xpZGVyIGZyb20gXCIuLi9NdWx0aVN0ZXBTbGlkZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kUmVxdWVzdHNNb2RhbCh7XG4gIHRpY2tldHMsXG4gIG9wZW4sXG4gIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlclxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVFdPKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRleHR9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jYW5jZWxcIil9XG4gICAgICA8L2gyPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblJlbW92ZT17b25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPE11bHRpU3RlcFNsaWRlciBvcGVuPXtvcGVufSBvbkNsb3NlU2xpZGVyPXtjbG9zZVNsaWRlcn0+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRIZWFkZXJzfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX08L2gzPlxuICAgICAgICA8L0JveD5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L011bHRpU3RlcFNsaWRlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufVxuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZFZhbHVlIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0LCBjaGlsZHJlbikgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgaWYgKCFydWxlUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWUudG9TdHJpbmcoKVxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBlbWFpbFwiKVxuICAgICAgLmVtYWlsKFwiRW1haWwgaW52YWxpZFwiKVxuICAgICAgLnJlcXVpcmVkKFwiRW1haWwgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGZpcnN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOiB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKFwiQ29tcGFueSBpcyByZXF1aXJlZFwiKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihcIlJlcXVpcmVkIGZpZWxkXCIpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKFwiQ29tcGFueSBpcyByZXF1aXJlZFwiKVxuICAgIClcbiAgfTtcblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBcIkZpZWxkIG11c3QgYmUgY2hlY2tlZFwiKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKFwiVGhpcyBxdWVzdGlvbiBpcyByZXF1aXJlZFwiKVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuLy8gb24gZm9ybWlrIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicXVlc3Rpb25zIHdpdGggYSB2YWx1ZVxuLy8gb24gc3VibWl0LCB3ZSBvbmx5IG5lZWQgcmVsZXZhbnQgYW5zd2Vyc1xuY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGFsbG93c0RlbGVnYXRpb24sXG4gIG1hbmFnZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwsXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZFxuICB9O1xuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9maXJzdF9uYW1lIHx8IG1hbmFnZXI/LmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lIHx8IG1hbmFnZXI/Lmxhc3RfbmFtZSB8fCBcIlwiO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBzdWJtaXRDb3VudCB9ID0gZm9ybWlrO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JBcnJheS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0nJHtlcnJvckFycmF5WzBdfSddYCk7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG4gICAgLy8gU2Nyb2xsIHRvIGZpcnN0IGtub3duIGVycm9yIGludG8gdmlld1xuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwiY2VudGVyXCIgfSk7XG4gIH0sIFtzdWJtaXRDb3VudF0pO1xufTtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0aWNrZXRNYW5hZ2VyID0gdGlja2V0Py5tYW5hZ2VyO1xuICAvKiBESVNBQkxFIERFTEVHQVRJT04gRlRNICovXG4gIGNvbnN0IGFsbG93c0RlbGVnYXRpb24gPSB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgJiYgZmFsc2U7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvblxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQnV0dG9uLFxuICBEcmF3ZXIsXG4gIEljb25CdXR0b24sXG4gIFR5cG9ncmFwaHksXG4gIERpYWxvZyxcbiAgRGlhbG9nVGl0bGUsXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQsIHNhdmVUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7IHN1bW1pdCwgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfSxcbiAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICBjdXJyZW50VGlja2V0OiB0aWNrZXRcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBpc09wZW4gPSB0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQ7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGUuaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlLmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiBcIlRpY2tldCBTYXZlZCFcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJ0aWNrZXQgc2F2ZWQgc3VjY2Vzc2Z1bGx5XCJcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IFwiRXJyb3Igc2F2aW5nIHRpY2tldC5cIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBvcGVuPXshIWlzT3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogXCJhdXRvXCIsIG1heFdpZHRoOiBcIjEwMCVcIiwgd2lkdGg6IFwiMTAwJVwiIH19XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucXJOb3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7IXN1bW1pdD8uaXNfdmlydHVhbCAmJiBpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kb3dubG9hZEJ0bn1cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZG93bmxvYWRcIil9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnNlbmRCdG59PlxuICAgICAgICAgICAgICAgIDxFbWFpbEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgPE9yZGVyTnVtYmVyXG4gICAgICAgICAgICAgIG51bWJlcj17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICBjb3B5XG4gICAgICAgICAgICAgIHRydW5jYXRlZFxuICAgICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9pbmZvcm1hdGlvblwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9EcmF3ZXI+XG4gICAgICA8RGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPntzYXZlTWVzc2FnZT8udGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICB7c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgIDwvRGlhbG9nPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRTdGF0dXNLZXkgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCB7XG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gVGlja2V0U3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZF9yZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSA9XG4gICAgZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCkgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCB0aWNrZXRfdW5hc3NpZ25lZCA9IGdldFRpY2tldFN0YXR1c0tleSh0aWNrZXQpID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgdGlja2V0X2NvbXBsZXRlID0gZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCkgPT09IFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kX3JlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3N0YXR1c19pbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF91bmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn1cblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kX3JlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJleHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID1cbiAgICB0aWNrZXQuZmluYWxfYW1vdW50ID4gMCAmJiB0aWNrZXQuZmluYWxfYW1vdW50ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudDtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgICh0aWNrZXQudGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlKSAmJlxuICAgIHN0YXR1cyAhPT0gU1RBVFVTX1VOQVNTSUdORUQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyPy5pZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDEsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDEsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4uZm9ybWVyT3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBzdGF0ZS5tZW1iZXJPcmRlcnMuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2U6OiBnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUNcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0IHx8ICF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlU3VtbWl0RGV0YWlscyB9IGZyb20gXCIuL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCIpO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAoeyB0aWNrZXQsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmVcbiAgfSA9IHVzZVN1bW1pdERldGFpbHMoeyBzdW1taXQgfSk7XG4gIGNvbnN0IFtzaG93UG9wdXAsIHNldFNob3dQb3B1cF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgaWYgKCFzdW1taXQgfHwgIXRpY2tldCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0VGlja2V0U3RhdHVzRGF0YSh0aWNrZXQsIGlzUGFzdCk7XG4gIGNvbnN0IHJvbGUgPSBnZXRUaWNrZXRSb2xlKHRpY2tldCk7XG4gIGNvbnN0IHR5cGUgPSBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoXG4gICAgKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZS5pZFxuICApO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMudHlwZSAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzLnR5cGUgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcblxuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldC50aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBjb25zdCB0b2dnbGVQb3B1cCA9ICgpID0+IHNldFNob3dQb3B1cCghc2hvd1BvcHVwKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIWlzQWN0aXZlKSByZXR1cm47XG5cbiAgICB0b2dnbGVQb3B1cCgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBvcHVwQ2xvc2UgPSAoKSA9PiB0b2dnbGVQb3B1cCgpO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIHJvbGUsXG4gICAgdHlwZSxcbiAgICBpc1N1bW1pdFBhc3Q6IGlzUGFzdCxcbiAgICBpc1N1bW1pdFN0YXJ0ZWQ6IGlzU3RhcnRlZCxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNSZWFzc2lnbmFibGUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgc2hvd1BvcHVwLFxuICAgIHNldFNob3dQb3B1cCxcbiAgICB0b2dnbGVQb3B1cCxcbiAgICBoYW5kbGVDbGljayxcbiAgICBoYW5kbGVQb3B1cENsb3NlXG4gIH07XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19Sb2ltUlwiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19vb0kwVlwiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19pbV9qaFwiO1xudmFyIF80ID0gXCJjb250YWluZXJfX19OM1k0WFwiO1xudmFyIF81ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fSlcybE9cIjtcbnZhciBfNiA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVjlnSENcIjtcbnZhciBfNyA9IFwiZmlsdGVyQ29udGFpbmVyX19fckdwWVZcIjtcbnZhciBfOCA9IFwiZmlsdGVyRGF0ZUxhYmVsX19faWZENHBcIjtcbnZhciBfOSA9IFwiZmlsdGVySWNvbl9fX2wyMUtJXCI7XG52YXIgX2EgPSBcImZpbHRlckxhYmVsX19fX1Awd25cIjtcbnZhciBfYiA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX1ZtZEdxXCI7XG52YXIgX2MgPSBcImZpbHRlck51bUFjdGl2ZV9fX1Z1SENKXCI7XG52YXIgX2QgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19hckJ2UVwiO1xudmFyIF9lID0gXCJsYWJlbF9fX3lORnlqXCI7XG52YXIgX2YgPSBcInNob3dEYXRlUGlja2VyX19fVXBRYnBcIjtcbnZhciBfMTAgPSBcInNvcnRDb250YWluZXJfX19sUnNqVVwiO1xudmFyIF8xMSA9IFwic29ydEljb25fX19mVlY1S1wiO1xudmFyIF8xMiA9IFwic29ydExhYmVsX19fVXFMVENcIjtcbnZhciBfMTMgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fY21uQkRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNvbnRhaW5lclwiLCBfNSBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzYgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzcgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgXzggYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgXzkgYXMgXCJmaWx0ZXJJY29uXCIsIF9hIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9jIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9kIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfZSBhcyBcImxhYmVsXCIsIF9mIGFzIFwic2hvd0RhdGVQaWNrZXJcIiwgXzEwIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTEgYXMgXCJzb3J0SWNvblwiLCBfMTIgYXMgXCJzb3J0TGFiZWxcIiwgXzEzIGFzIFwic29ydExpc3RDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXVsdGlzdGVwQ2xvc2VJY29uX19fcWM2TkRcIjtcbnZhciBfMiA9IFwibXVsdGlzdGVwQ29udGFpbmVyX19fZFBhUzVcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXVsdGlzdGVwQ2xvc2VJY29uXCIsIF8yIGFzIFwibXVsdGlzdGVwQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfMyA9IFwiY29weUljb25fX19Oa0hHT1wiO1xudmFyIF80ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF81ID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgXzYgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfNyA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfOCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfOSA9IFwib3JkZXJUaWNrZXROb0NvbnRhaW5lcl9fX3Zxb2hOXCI7XG52YXIgX2EgPSBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkX19fSFhtZHdcIjtcbnZhciBfYiA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfYyA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF9kID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfZSA9IFwicmV2ZXJzZWRfX19ERmVhX1wiO1xudmFyIF9mID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTAgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xMSA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzEyID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzEzID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMTQgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xNSA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzE2ID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImJsYWNrQnV0dG9uXCIsIF8zIGFzIFwiY29weUljb25cIiwgXzQgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzUgYXMgXCJsYWJlbFwiLCBfNiBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF83IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF84IGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF85IGFzIFwib3JkZXJUaWNrZXROb0NvbnRhaW5lclwiLCBfYSBhcyBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkXCIsIF9iIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9jIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2QgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF9lIGFzIFwicmV2ZXJzZWRcIiwgX2YgYXMgXCJ0YWJCdXR0b25zXCIsIF8xMCBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzExIGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aWNrZXROb1wiLCBfMTMgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xNCBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzE1IGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMTYgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMiA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfMyA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF80ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfNSA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF82ID0gXCJyZWZ1bmRIZWFkZXJzX19fSFZJbWtcIjtcbnZhciBfNyA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgXzggPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF85ID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF9hID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfYiA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF9jID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzIgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzMgYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfNCBhcyBcImRlbGV0ZUljb25cIiwgXzUgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfNiBhcyBcInJlZnVuZEhlYWRlcnNcIiwgXzcgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF84IGFzIFwicmVmdW5kVGV4dFwiLCBfOSBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfYSBhcyBcInN1Y2Nlc3NNc2dcIiwgX2IgYXMgXCJzdWNjZXNzTXNnMlwiLCBfYyBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2FuY2VsQnRuX19fZ2dDZGpcIjtcbnZhciBfNiA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF83ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfOCA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF85ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgX2EgPSBcImZvb3Rlcl9fX05JTTdkXCI7XG52YXIgX2IgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2MgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfZCA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfZSA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZiA9IFwic2F2ZUJ0bl9fX05wT0VWXCI7XG52YXIgXzEwID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfMTEgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzEzID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xNCA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2FuY2VsQnRuXCIsIF82IGFzIFwiY2xvc2VCdG5cIiwgXzcgYXMgXCJjb3B5QnRuXCIsIF84IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzkgYXMgXCJkb3dubG9hZEJ0blwiLCBfYSBhcyBcImZvb3RlclwiLCBfYiBhcyBcImhlYWRlclwiLCBfYyBhcyBcIm9yZGVyTnVtYmVyXCIsIF9kIGFzIFwicXJDb2RlXCIsIF9lIGFzIFwicXJOb3RlXCIsIF9mIGFzIFwic2F2ZUJ0blwiLCBfMTAgYXMgXCJzZW5kQnRuXCIsIF8xMSBhcyBcInN0YXR1c1wiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzE0IGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCAsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiZ2V0UmVxdWVzdCIsImRlbGV0ZVJlcXVlc3QiLCJjcmVhdGVBY3Rpb24iLCJzdG9wTG9hZGluZyIsInN0YXJ0TG9hZGluZyIsInB1dFJlcXVlc3QiLCJwTGltaXQiLCJnZXRJZFRva2VuIiwiSWRUb2tlblZlcmlmaWVyIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJGSVJTVF9QQUdFIiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIk9ORV9QQUdFX05FWFQiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiRklGVFlfUEVSX1BBR0UiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlNFVF9TVEFURSIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFN0YXRlIiwiZGlzcGF0Y2giLCJyZXNldEZpbHRlciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiZmlsdGVyIiwidHlwZSIsInB1c2giLCJjb25jYXQiLCJuYW1lIiwibG93ZXIiLCJ1cHBlciIsInZhbHVlIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImdldFVzZXJPcmRlcnMiLCJfcmVmIiwicGFnZSIsInBlclBhZ2UiLCJzb3J0IiwibmV4dCIsImdldFN0YXRlIiwiX3JlZjIiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsImNhdGNoIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZmlsdGVycyIsImlkIiwidGhlbiIsInBheWxvYWQiLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmMyIsIl9yZWY0IiwidXNlclN0YXRlIiwidXNlclByb2ZpbGUiLCJleHBhbmQiLCJmaWVsZHMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY1IiwiX3JlZjYiLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmNyIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY4IiwiX3JlZjkiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMCIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwicmVzIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMSIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTIiLCJmaW5hbGx5Iiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjEzIiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE0IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsIlByb3BUeXBlcyIsIlN0YWNrIiwidXNlVHJhbnNsYXRpb24iLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInN0eWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsInQiLCJub3ciLCJkYXRlVmFsdWUiLCJzZXREYXRlVmFsdWUiLCJvbkRhdGVDaGFuZ2UiLCJ2YWwiLCJkYXRlIiwiRGF0ZSIsIiRkIiwib25SZXNldEFjdGlvbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsIm9uQ2xpY2siLCJkYXRlQWRhcHRlciIsImNhbGVuZGFyRGlzcGxheSIsIm9uQ2hhbmdlIiwicHJvcFR5cGVzIiwiZnVuYyIsInVzZVJlZiIsInVzZUVmZmVjdCIsIkZpbHRlckxpc3RJY29uIiwiQm94IiwiRmlsdGVyIiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwic2hvd0RhdGVQaWNrZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJ3aWR0aCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiY29sb3IiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJrZXkiLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwicGxhY2Vob2xkZXIiLCJpbnB1dFByb3BzIiwiQnV0dG9uIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsImxhYmVsIiwiR3JpZCIsIkZpbHRlclNvcnRTZWFyY2giLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJjbGFzc05hbWVzIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJzdHlsZSIsIkRyYXdlciIsIkNvbnRhaW5lciIsIk11bHRpU3RlcFNsaWRlciIsIm9wZW4iLCJvbkNsb3NlU2xpZGVyIiwiYW5jaG9yIiwib25DbG9zZSIsIlBhcGVyUHJvcHMiLCJtdWx0aXN0ZXBDb250YWluZXIiLCJtdWx0aXN0ZXBDbG9zZUljb24iLCJub2RlIiwiYm9vbCIsInVzZURpc3BhdGNoIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc190b3RhbCIsInN0YXRlIiwiaGFzTW9yZSIsInNldEhhc01vcmUiLCJzZWFyY2hOZXh0Iiwic2V0U2VhcmNoTmV4dCIsInNldEZpbHRlciIsInNldFNvcnQiLCJmZXRjaERhdGEiLCJfcmVzJHJlc3BvbnNlIiwid2lkZ2V0SGVhZGVyIiwibWQiLCJsZyIsInN1bW1pdFRpdGxlRGF0ZSIsImRhdGFMZW5ndGgiLCJzY3JvbGxUaHJlc2hvbGQiLCJudW1iZXIiLCJub09yZGVyc0ZvdW5kIiwiRGl2aWRlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic3RhdHVzIiwic2hhcGUiLCJzdHJpbmciLCJvYmplY3QiLCJhcnJheU9mIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJyZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzVG9SZWZ1bmQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInZhcmlhbnQiLCJzaXplIiwiZGlzYWJsZWQiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJ0aWNrZXRPd25lckVtYWlsIiwiaXNfYWN0aXZlIiwiT3JkZXJMaXN0VGlja2V0cyIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJ0b3RhbCIsIm9uUGFnaW5hdGVDbGljayIsInNlbGVjdFRvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwiQ2hlY2tib3giLCJUaWNrZXRTdGF0dXMiLCJPcmRlck51bWJlciIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfb3BlblRpY2tldCRvd25lciIsIm9wZW5UaWNrZXQiLCJzZXRPcGVuVGlja2V0IiwicmVhc3NpZ25EYXRlIiwib3JkZXJXcmFwcGVyIiwidGlja2V0VGlja2V0VHlwZSIsImNoZWNrZWQiLCJ0aWNrZXRObyIsImNvcHkiLCJ0cnVuY2F0ZWQiLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIkNvbnRlbnRDb3B5SWNvbiIsImRlZmF1bHRXaWR0aCIsInJldmVyc2VkIiwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWQiLCJvcmRlclRpY2tldE5vQ29udGFpbmVyIiwiY29weUljb24iLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsImhhbmRsZUNoYW5nZSIsIl8iLCJuZXdWYWx1ZSIsInNldFJlZnVuZFJlcXVlc3RlZCIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2FuY2VsVGlja2V0c1RvUmVmdW5kIiwic2VsZWN0QWxsVGlja2V0cyIsInJlZnVuZGFibGVUaWNrZXRzIiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwidGlja2V0TGlzdENvbnRhaW5lciIsImJvcmRlckNvbG9yIiwidGV4dENvbG9yIiwiVGFiSW5kaWNhdG9yUHJvcHMiLCJiYWNrZ3JvdW5kIiwidGFiQnV0dG9ucyIsInJlZnVuZEJ1dHRvbnMiLCJvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cyIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0T3JkZXJUaWNrZXRzIiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwibGFzdF9wYWdlIiwidGhlbWUiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJtZW1iZXJUaWNrZXRzIiwiZmV0Y2hUaWNrZXRzQnlPcmRlciIsImN1cnJlbnRfcGFnZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidGlja2V0c190b3RhbCIsIkRlbGV0ZU91dGxpbmVJY29uIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0Iiwib25SZW1vdmUiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJkZWxldGVJY29uIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJDaGVja0NpcmNsZUljb24iLCJTVEVQX09ORSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjbG9zZVNsaWRlciIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwicmVmdW5kVGV4dCIsInJlZnVuZEVycm9yTXNnIiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwicmVmdW5kSGVhZGVycyIsImFycmF5IiwiVGV4dEZpZWxkIiwiQXV0b2NvbXBsZXRlIiwiVHlwb2dyYXBoeSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwiZm9ybWlrIiwic3VtbWl0SWQiLCJpc1JlcXVpcmVkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsImVycm9ycyIsInZhbHVlcyIsInRvdWNoZWQiLCJzZXRGaWVsZFRvdWNoZWQiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJCb29sZWFuIiwiaGVscGVyVGV4dCIsInVuZGVmaW5lZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJvbkJsdXIiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwic29tZSIsInRpdGxlIiwicmVuZGVySW5wdXQiLCJmdWxsV2lkdGgiLCJyZXF1aXJlZCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJyZXN0IiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJ2Iiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwibWFyZ2luQm90dG9tIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiZm9yRWFjaCIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJ0ZXh0IiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsImVudHJpZXMiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUJsdXIiLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIndyYXBwZXIiLCJUaWNrZXREZWxlZ2F0aW9uRmllbGRzIiwiZGVsZWdhdGVkX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZWRfbGFzdF9uYW1lIiwidXNlRm9ybWlrIiwieXVwIiwiVGlja2V0T3duZXJGaWVsZHMiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJhbGxvd3NEZWxlZ2F0aW9uIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJzdWJRdWVzdGlvbiIsInN1YlF1ZXN0aW9uU2x1ZyIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJtYXRjaCIsInNjaCIsInBhcnNlQW5zd2VycyIsIm9ubHlSZWxldmFudCIsImFyZ3VtZW50cyIsImluaXRpYWxWYWx1ZXMiLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMyIiwic3ViQW5zd2VyIiwidXNlU2Nyb2xsVG9FcnJvciIsImlzVmFsaWQiLCJzdWJtaXRDb3VudCIsImVycm9yQXJyYXkiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInNjcm9sbEludG9WaWV3IiwiYmVoYXZpb3IiLCJibG9jayIsIlRpY2tldEZvcm0iLCJjYW5FZGl0Iiwib25TdWJtaXQiLCJ0aWNrZXRNYW5hZ2VyIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicmVkdWNlIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJndXR0ZXJCb3R0b20iLCJkZWxlZ2F0ZWRUbyIsImFkZGl0aW9uYWxEZXRhaWxzIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImZvb3RlciIsInNhdmVCdG4iLCJpc1N1Ym1pdHRpbmciLCJjYW5jZWxCdG4iLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkljb25CdXR0b24iLCJEaWFsb2ciLCJEaWFsb2dUaXRsZSIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkNsb3NlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiTUlMTElTRUNfVE9fU0VDIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiY3VycmVudFRpY2tldCIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJpc09wZW4iLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsImlzQ29tcGxldGUiLCJvblNhdmUiLCJkZXNjcmlwdGlvbiIsInJlc29sdmUiLCJlcnIiLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJzZXRUaW1lb3V0IiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsInN1YnRpdGxlIiwicXJDb2RlIiwibWF4V2lkdGgiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwib3JkZXJOdW1iZXIiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwidGlja2V0X3N0YXR1c19pbmNvbXBsZXRlIiwidGlja2V0X3VuYXNzaWduZWQiLCJ0aWNrZXRfY29tcGxldGUiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25QaWxsIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIlNUQVRVU19DQU5DRUxMRUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JG93bmVyMyIsIl90aWNrZXQkb3duZXI0IiwiZ2V0U3RhdHVzIiwiZmluYWxfYW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiYWxsb3dzRGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiaTE4biIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX2xhc3RfcGFnZSIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJfdGlja2V0c1JlZnVuZFJlcXVlc3QiLCJ1cGRhdGVkVGlja2V0cyIsInRyciIsInRpY2tldERhdGEiLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiVFdPX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIm1vbWVudCIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJhbW91bnQiLCJ0aWNrZXRfdHlwZXMiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJNYXRoIiwicm91bmQiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJiYWRnZSIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImpvaW4iLCJnZXRUaWNrZXRUeXBlIiwicnIiLCJfdGlja2V0JG93bmVyNSIsIl90aWNrZXQkb3duZXI2Iiwic2hvd1BvcHVwIiwic2V0U2hvd1BvcHVwIiwidG9nZ2xlUG9wdXAiLCJoYW5kbGVDbGljayIsImhhbmRsZVBvcHVwQ2xvc2UiLCJpc1N1bW1pdFN0YXJ0ZWQiLCJQcm92aWRlciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93Iiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
6330
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ2Y7QUFDVztBQUNuQjtBQUNvQjtBQUNGO0FBQUE7QUFFekQsTUFBTUksdUJBQXVCLEdBQUlwaEIsS0FBSyxJQUFLO0VBQ3pDLE1BQU07SUFDSjBaLFFBQVE7SUFDUjJILFlBQVk7SUFDWjM2QixNQUFNO0lBQ053QixVQUFVO0lBQ1Z2QixJQUFJO0lBQ0o4eUIsUUFBUTtJQUNSN3NCO0VBQ0YsQ0FBQyxHQUFHb1QsS0FBSztFQUNULE1BQU07SUFBRXpRO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLE1BQU07SUFBRXNyQixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1IySCxZQUFZO0lBQ1ozNkIsTUFBTTtJQUNOQyxJQUFJO0lBQ0p1QixVQUFVO0lBQ1Z1eEIsUUFBUTtJQUNSN3NCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTTAwQixnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU05NEIsTUFBTSxHQUFHLElBQUkrNEIsZUFBZSxDQUFDQyxNQUFNLENBQUMxQyxRQUFRLENBQUMyQyxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHbDVCLE1BQU0sQ0FBQ201QixHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRTlILEtBQUssQ0FBQ3J6QixRQUFRLENBQUM7TUFBRVUsSUFBSSxFQUFFN0MsaURBQVc7TUFBRStFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUQrSCxnREFBUyxDQUFDLE1BQU07SUFDZDBvQixLQUFLLENBQUNyekIsUUFBUSxDQUFDRSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFb0ksc0RBQUEsQ0FBQ215QixpREFBUTtJQUFDdEgsS0FBSyxFQUFFQSxLQUFNO0lBQUEzcEIsUUFBQSxlQUNyQmxCLHNEQUFBLENBQUNveUIsd0VBQVc7TUFDVlMsWUFBWSxFQUFFTixnQkFBaUI7TUFDL0I5SixPQUFPLEVBQUUsSUFBSztNQUNkK0MsU0FBUyxFQUFFQSxTQUFVO01BQUF0cUIsUUFBQSxlQUVyQmhCLHVEQUFBLENBQUMyVSwrREFBb0I7UUFBQ3VCLFdBQVc7UUFBQWxWLFFBQUEsZ0JBQy9CbEIsc0RBQUEsQ0FBQ3FDLDhDQUFHO1VBQUNmLEVBQUUsRUFBRTtZQUFFMEQsT0FBTyxFQUFFO2NBQUVrQyxFQUFFLEVBQUUsQ0FBQztjQUFFMEMsRUFBRSxFQUFFLENBQUM7Y0FBRUMsRUFBRSxFQUFFO1lBQUU7VUFBRSxDQUFFO1VBQUEzSSxRQUFBLGVBQzVDbEIsc0RBQUE7WUFBQWtCLFFBQUEsRUFBS1YsQ0FBQyxDQUFDLGNBQWM7VUFBQyxDQUFLO1FBQUMsQ0FDekIsQ0FBQyxlQUNOUixzREFBQSxDQUFDNkksbUVBQWU7VUFDZDhoQixRQUFRLEVBQUVBLFFBQVM7VUFDbkIySCxZQUFZLEVBQUVBLFlBQWE7VUFDM0IzNkIsTUFBTSxFQUFFQSxNQUFPO1VBQ2Z3QixVQUFVLEVBQUVBO1FBQVcsQ0FDeEIsQ0FBQztNQUFBLENBQ2tCO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRGs1Qix1QkFBdUIsQ0FBQ3J3QixTQUFTLEdBQUc7RUFDbEMyb0IsUUFBUSxFQUFFdHJCLDBEQUFnQjtFQUMxQml6QixZQUFZLEVBQUVqekIsMERBQWdCO0VBQzlCMUgsTUFBTSxFQUFFMEgsMERBQWdCO0VBQ3hCbEcsVUFBVSxFQUFFa0csMERBQWdCO0VBQzVCekgsSUFBSSxFQUFFeUgsMERBQWdCO0VBQ3RCcXJCLFFBQVEsRUFBRXJyQiwwREFBZ0I7RUFDMUJ4QixhQUFhLEVBQUV3Qix3REFBYzRDO0FBQy9CLENBQUM7QUFFRCxpRUFBZW93Qix1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9EYXRlcGlja2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL011bHRpU3RlcFNsaWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTnVtYmVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGVsZWdhdGlvbkZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL011bHRpU3RlcFNsaWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9EZWxldGVPdXRsaW5lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgZ2V0UmVxdWVzdCxcbiAgZGVsZXRlUmVxdWVzdCxcbiAgY3JlYXRlQWN0aW9uLFxuICBzdG9wTG9hZGluZyxcbiAgc3RhcnRMb2FkaW5nLFxuICBwdXRSZXF1ZXN0XG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIEZJUlNUX1BBR0UsXG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIE9ORV9QQUdFX05FWFQsXG4gIFBST01JU0VfQkFUQ0hfTElNSVQsXG4gIEZJRlRZX1BFUl9QQUdFXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUUyA9IFwiR0VUX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIvU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfVtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9PUAke2ZpbHRlck9iai52YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PlxuICBkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiO1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fSxcbiAgICBuZXh0ID0gZmFsc2VcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlOiBuZXh0ID8gcGFnZSArIE9ORV9QQUdFX05FWFQgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlcik7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7IHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHVzZXJTdGF0ZTogeyB1c2VyUHJvZmlsZSB9LFxuICAgICAgc3VtbWl0XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBpZiAoIXVzZXJQcm9maWxlLmlkKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGZpbHRlcjogXCJzdGF0dXM9PVBhaWRcIixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvcmRlci5pZCxvcmRlci5vd25lcl9maXJzdF9uYW1lLG9yZGVyLm93bmVyX2xhc3RfbmFtZSxvcmRlci5vd25lcl9lbWFpbCxvd25lci5maXJzdF9uYW1lLG93bmVyLmxhc3RfbmFtZSxvd25lci5zdGF0dXNcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHsgb3JkZXJJZCwgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgaWRUb2tlbiA9IGdldElkVG9rZW4oKTtcbiAgICBsZXQgY29tcGFueSA9IFwiXCI7XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVyID0gbmV3IElkVG9rZW5WZXJpZmllcigpO1xuICAgICAgICBjb25zdCBqd3QgPSB2ZXJpZmllci5kZWNvZGUoaWRUb2tlbik7XG4gICAgICAgIGNvbXBhbnkgPSBqd3QucGF5bG9hZC5jb21wYW55O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEVudGl0eSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHJlZnJlc2hQcm9maWxlKGFuc3dlcnMsIGNvbXBhbnksIHRpY2tldC5vd25lcikpO1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQWRhcHRlckRheWpzIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Qcm92aWRlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9EQVRFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RhdGVQaWNrZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgY29uc3QgW2RhdGVWYWx1ZSwgc2V0RGF0ZVZhbHVlXSA9IHVzZVN0YXRlKG5vdyk7XG4gIGNvbnN0IG9uRGF0ZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBzZXREYXRlVmFsdWUodmFsKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsLiRkKTtcbiAgICBjb25zdCB7IGxvd2VyLCB1cHBlciB9ID0gZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzKGRhdGUpO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIHR5cGU6IEZJTFRFUl9WQVJfREFURSxcbiAgICAgIG5hbWU6IFwiY3JlYXRlZFwiLFxuICAgICAgZGF0ZSxcbiAgICAgIGxvd2VyLFxuICAgICAgdXBwZXJcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgb25SZXNldEFjdGlvbiA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgc2V0RGF0ZVZhbHVlKG5vdyk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyRGF0ZUxhYmVsfT57dChcImZpbHRlci5wdXJjaGFzZWRfb25cIil9PC9kaXY+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlUGlja2VyQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZXBpY2tlckNsb3NlfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVzZXRBY3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxMb2NhbGl6YXRpb25Qcm92aWRlciBkYXRlQWRhcHRlcj17QWRhcHRlckRheWpzfT5cbiAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FsZW5kYXJEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uRGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Mb2NhbGl6YXRpb25Qcm92aWRlcj5cbiAgICAgIDwvU3RhY2s+XG4gICAgPC8+XG4gICk7XG59XG5cbkJhc2ljRGF0ZVBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IEJhc2ljRGF0ZVBpY2tlciBmcm9tIFwiLi9EYXRlcGlja2VyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICB7LyoqIGN1cnJlbnRseSBqdXN0IHNob3dpbmcgXCIxXCIgYmVjYXVzZSB3ZSdyZSBjdXJyZW50bHkgb25seSBmaWx0ZXJpbmcgb25lIGNyaXRlcmlhIC0gY3JlYXRlZCBkYXRlICovfVxuICAgICAgICB7ZmlsdGVyTnVtQWN0aXZlICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTnVtQWN0aXZlfT4xPC9kaXY+fVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RGF0ZVBpY2tlciA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxCYXNpY0RhdGVQaWNrZXJcbiAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XG4gICAgICAgICAgICBvblJlc2V0KCk7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoZmFsc2UpO1xuICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgb25GaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZSh0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuZnVuY3Rpb24gU2VhcmNoKHsgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbmFtZTogXCJudW1iZXJcIixcbiAgICAgICAgdHlwZTogRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgICBvblJlc2V0KCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gU29ydCh7IG9uU29ydCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH0+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiZGVzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImFzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXJTb3J0U2VhcmNoKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICByZXR1cm4gKFxuICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIHhzPXs2fVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgZ2FwPXsyfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbkZpbHRlclNvcnRTZWFyY2gucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlclNvcnRTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IERyYXdlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EcmF3ZXJcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE11bHRpU3RlcFNsaWRlcih7IGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJhd2VyXG4gICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZVNsaWRlcn1cbiAgICAgIFBhcGVyUHJvcHM9e3tcbiAgICAgICAgc3g6IHtcbiAgICAgICAgICB3aWR0aDogXCI2MCVcIlxuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ29udGFpbmVyfT5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm11bHRpc3RlcENsb3NlSWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlU2xpZGVyfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2Utc2xpZGVyXCJcbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9EcmF3ZXI+XG4gICk7XG59XG5cbk11bHRpU3RlcFNsaWRlci5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNdWx0aVN0ZXBTbGlkZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBGaWx0ZXJTb3J0U2VhcmNoIGZyb20gXCIuL0ZpbHRlclNvcnRTZWFyY2hcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IGdldFVzZXJPcmRlcnMsIHJlc2V0RmlsdGVyIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICBtZW1iZXJPcmRlcnMsXG4gICAgb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgb3JkZXJzX3RvdGFsXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBbaGFzTW9yZSwgc2V0SGFzTW9yZV0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW3NlYXJjaE5leHQsIHNldFNlYXJjaE5leHRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbc29ydCwgc2V0U29ydF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNlYXJjaE5leHQoZmFsc2UpO1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlOiBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHNlYXJjaE5leHQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApLnRoZW4oKHJlcykgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZXMucmVzcG9uc2U/LmRhdGE/Lmxlbmd0aCA+IG9yZGVyc19wZXJfcGFnZSAmJlxuICAgICAgICBtZW1iZXJPcmRlcnMubGVuZ3RoID09PSBvcmRlcnNfdG90YWxcbiAgICAgIClcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEoKTtcbiAgfSwgW2ZpbHRlciwgc29ydCwgc2VhcmNoTmV4dF0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlcikgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuICBjb25zdCBvblNvcnQgPSAoZGlyZWN0aW9uKSA9PiB7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTb3J0KHsgZGlyZWN0aW9uLCBuYW1lOiBcImNyZWF0ZWRcIiB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RmlsdGVyU29ydFNlYXJjaFxuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgICAgPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L0JveD5cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzLmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBzZXRTZWFyY2hOZXh0KHRydWUpfVxuICAgICAgICAgIGhhc01vcmU9e2hhc01vcmV9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgICAgPE9yZGVyc0xpc3RcbiAgICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzRm91bmR9Pnt0KFwib3JkZXJzLm5vX29yZGVyc1wiKX08L0JveD5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnlUYWJsZSh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZGlzY291bnRUb3RhbCwgcmVmdW5kVG90YWwsIHRheGVzVG90YWwsIGFtb3VudFRvdGFsLCB0aWNrZXRTdW1tYXJ5IH0gPVxuICAgIGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KTtcbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktaXRlbWl6ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgeHt0aWNrZXQucXR5fSB7dGlja2V0LnRpY2tldF90eXBlLm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXRUb3RhbCwgeyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfSl9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuZGlzY291bnRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5kaXNjb3VudHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17ZGlzY291bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIudGF4ZXNfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50YXhlc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3RheGVzVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuYW1vdW50X3BhaWRcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17YW1vdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge3JlZnVuZFRvdGFsID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7cmVmdW5kVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgPyBcIiQwLjAwXCIgOiBhbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufVxuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kRW1haWxTdXBwb3J0KHtcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHMsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGljayxcbiAgb25FbWFpbFN1cHBvcnRDbGlja1xufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBpc0luUmVmdW5kYWJsZVBlcmlvZCA9XG4gICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSA+IG5vdztcbiAgY29uc3QgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQgPSB0aWNrZXRzUmVmdW5kYWJsZSh0aWNrZXRzKTtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gISEoaXNJblJlZnVuZGFibGVQZXJpb2QgJiYgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn0gJHtcbiAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZCAmJiB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwICYmICFzdWJtaXRSZXF1ZXN0XG4gICAgICAgICAgICAgID8gc3R5bGVzLnJlZnVuZERpc2FibGVkXG4gICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZCAmJiB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwICYmICFzdWJtaXRSZXF1ZXN0XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25FbWFpbFN1cHBvcnRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJTdW1tYXJ5KHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgb25SZWZ1bmRDbGljayxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHN1Ym1pdFJlcXVlc3Rcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlXG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiB7fX1cbiAgICAgICAgICBvbkVtYWlsU3VwcG9ydENsaWNrPXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBBdHRlbmRlZVN0YXR1cyh7IHRpY2tldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIHRpY2tldC5vd25lcj8uZW1haWwgPyAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+XG4gICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7XCIgXCJ9XG4gICAgICAgIHt0aWNrZXQub3duZXI/LmVtYWlsfVxuICAgICAgPC9zcGFuPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIHRpY2tldC5pc19hY3RpdmUgJiYgKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApXG4gICk7XG59XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJMaXN0SXRlbSh7XG4gIHRpY2tldHMsXG4gIHRvdGFsLFxuICBvblBhZ2luYXRlQ2xpY2ssXG4gIHN1bW1pdCxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IHRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAodG90YWwgPiB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7dGlja2V0cz8ubGVuZ3RoID49IGl0ZW1zVG9EaXNwbGF5ICYmIHRpY2tldHM/Lmxlbmd0aCAhPT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBtb3JlIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TW9yZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IHRvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFRpY2tldERldGFpbCBmcm9tIFwiLi4vVGlja2V0RGV0YWlsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259PlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufSBvbkNsaWNrPXtvbk9wZW5DbGlja30+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW29wZW5UaWNrZXQsIHNldE9wZW5UaWNrZXRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9ezh9XG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiBpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogMiwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlfVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXsoKSA9PiBzZXRPcGVuVGlja2V0KHRpY2tldCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgdGlja2V0SWQ9e29wZW5UaWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXtvcGVuVGlja2V0Py5vcmRlcl9pZH1cbiAgICAgICAgb3duZXJJZD17b3BlblRpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRPcGVuVGlja2V0KG51bGwpfVxuICAgICAgLz5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuZnVuY3Rpb24gT3JkZXJOdW1iZXIoe1xuICBudW1iZXIsXG4gIGNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gZmFsc2UsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSB7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Tm9Db250YWluZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge251bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjb3B5ICYmIChcbiAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG51bWJlcil9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuT3JkZXJOdW1iZXIucHJvcFR5cGVzID0ge1xuICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlck51bWJlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFRhYlBhbmVsKHByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgb3JkZXIsXG4gIHRvdGFsLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3JlZnVuZFJlcXVlc3RlZCwgc2V0UmVmdW5kUmVxdWVzdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHNldFJlZnVuZFJlcXVlc3RlZCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSB0aWNrZXRzLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBjYW5jZWxUaWNrZXRzVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdEFsbFRpY2tldHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmdW5kYWJsZVRpY2tldHMgPSB0aWNrZXRzLmZpbHRlcihcbiAgICAgICh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpID09PSB0cnVlXG4gICAgKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQocmVmdW5kYWJsZVRpY2tldHMpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgdGV4dENvbG9yPVwiIzAwMFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgICBUYWJJbmRpY2F0b3JQcm9wcz17e1xuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmRSZXF1ZXN0ZWQgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgICAgPHNwYW4+e3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF90aWNrZXRfcmVmdW5kXCIpfTwvc3Bhbj5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxUaWNrZXRzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2FsbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kQnV0dG9uc31cbiAgICAgICAgICAgICAgb25DbGljaz17Y2FuY2VsVGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2NhbmNlbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0U3VibWl0UmVxdWVzdChmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldE9yZGVyVGlja2V0cywgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3QocHJvcHMpIHtcbiAgY29uc3QgeyBzdW1taXQsIG9yZGVyIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgcGVyX3BhZ2UsIGxhc3RfcGFnZSwgbWVtYmVyT3JkZXJzIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuICBjb25zdCBmZXRjaFRpY2tldHNCeU9yZGVyID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgY3VycmVudF9wYWdlOiBsYXN0X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlXG4gICAgICB9KVxuICAgICkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hUaWNrZXRzQnlPcmRlcigpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMSxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e29yZGVyLm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e2dldE9yZGVyVGlja2V0cyhtZW1iZXJPcmRlcnMsIG9yZGVyLmlkKX1cbiAgICAgICAgICB0b3RhbD17b3JkZXIudGlja2V0c190b3RhbH1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9e2RldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IERlbGV0ZU91dGxpbmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFJlZnVuZFJlcXVlc3RlZFRpY2tldCh7IHRpY2tldCwgb25SZW1vdmUgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8RGVsZXRlT3V0bGluZUljb25cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlbW92ZS1idXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGVsZXRlSWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUmVtb3ZlKHRpY2tldCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uUmVtb3ZlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgTXVsdGlTdGVwU2xpZGVyIGZyb20gXCIuLi9NdWx0aVN0ZXBTbGlkZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kUmVxdWVzdHNNb2RhbCh7XG4gIHRpY2tldHMsXG4gIG9wZW4sXG4gIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlclxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVFdPKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRleHR9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jYW5jZWxcIil9XG4gICAgICA8L2gyPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblJlbW92ZT17b25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPE11bHRpU3RlcFNsaWRlciBvcGVuPXtvcGVufSBvbkNsb3NlU2xpZGVyPXtjbG9zZVNsaWRlcn0+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRIZWFkZXJzfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX08L2gzPlxuICAgICAgICA8L0JveD5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L011bHRpU3RlcFNsaWRlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufVxuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZFZhbHVlIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0LCBjaGlsZHJlbikgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgaWYgKCFydWxlUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWUudG9TdHJpbmcoKVxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBlbWFpbFwiKVxuICAgICAgLmVtYWlsKFwiRW1haWwgaW52YWxpZFwiKVxuICAgICAgLnJlcXVpcmVkKFwiRW1haWwgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGZpcnN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOiB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKFwiQ29tcGFueSBpcyByZXF1aXJlZFwiKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihcIlJlcXVpcmVkIGZpZWxkXCIpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKFwiQ29tcGFueSBpcyByZXF1aXJlZFwiKVxuICAgIClcbiAgfTtcblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBcIkZpZWxkIG11c3QgYmUgY2hlY2tlZFwiKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKFwiVGhpcyBxdWVzdGlvbiBpcyByZXF1aXJlZFwiKVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuLy8gb24gZm9ybWlrIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicXVlc3Rpb25zIHdpdGggYSB2YWx1ZVxuLy8gb24gc3VibWl0LCB3ZSBvbmx5IG5lZWQgcmVsZXZhbnQgYW5zd2Vyc1xuY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGFsbG93c0RlbGVnYXRpb24sXG4gIG1hbmFnZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwsXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZFxuICB9O1xuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9maXJzdF9uYW1lIHx8IG1hbmFnZXI/LmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lIHx8IG1hbmFnZXI/Lmxhc3RfbmFtZSB8fCBcIlwiO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBzdWJtaXRDb3VudCB9ID0gZm9ybWlrO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JBcnJheS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0nJHtlcnJvckFycmF5WzBdfSddYCk7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG4gICAgLy8gU2Nyb2xsIHRvIGZpcnN0IGtub3duIGVycm9yIGludG8gdmlld1xuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwiY2VudGVyXCIgfSk7XG4gIH0sIFtzdWJtaXRDb3VudF0pO1xufTtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0aWNrZXRNYW5hZ2VyID0gdGlja2V0Py5tYW5hZ2VyO1xuICAvKiBESVNBQkxFIERFTEVHQVRJT04gRlRNICovXG4gIGNvbnN0IGFsbG93c0RlbGVnYXRpb24gPSB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgJiYgZmFsc2U7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvblxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQnV0dG9uLFxuICBEcmF3ZXIsXG4gIEljb25CdXR0b24sXG4gIFR5cG9ncmFwaHksXG4gIERpYWxvZyxcbiAgRGlhbG9nVGl0bGUsXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQsIHNhdmVUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7IHN1bW1pdCwgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfSxcbiAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICBjdXJyZW50VGlja2V0OiB0aWNrZXRcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBpc09wZW4gPSB0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQ7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGUuaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlLmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBvcGVuPXshIWlzT3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogXCJhdXRvXCIsIG1heFdpZHRoOiBcIjEwMCVcIiwgd2lkdGg6IFwiMTAwJVwiIH19XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucXJOb3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7IXN1bW1pdD8uaXNfdmlydHVhbCAmJiBpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kb3dubG9hZEJ0bn1cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZG93bmxvYWRcIil9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnNlbmRCdG59PlxuICAgICAgICAgICAgICAgIDxFbWFpbEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgPE9yZGVyTnVtYmVyXG4gICAgICAgICAgICAgIG51bWJlcj17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICBjb3B5XG4gICAgICAgICAgICAgIHRydW5jYXRlZFxuICAgICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9pbmZvcm1hdGlvblwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9EcmF3ZXI+XG4gICAgICA8RGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPntzYXZlTWVzc2FnZT8udGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICB7c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgIDwvRGlhbG9nPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRSZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJleHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID1cbiAgICB0aWNrZXQuZmluYWxfYW1vdW50ID4gMCAmJiB0aWNrZXQuZmluYWxfYW1vdW50ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudDtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgICh0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlKSAmJlxuICAgIHN0YXR1cyAhPT0gU1RBVFVTX1VOQVNTSUdORUQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyPy5pZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDEsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDEsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4uZm9ybWVyT3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdlOjogZ2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCB8fCAhdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7IHVzZVN1bW1pdERldGFpbHMgfSBmcm9tIFwiLi9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1VOQVNTSUdORURcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gdGlja2V0Py5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHsgdGlja2V0LCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZSxcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lXG4gIH0gPSB1c2VTdW1taXREZXRhaWxzKHsgc3VtbWl0IH0pO1xuICBjb25zdCBbc2hvd1BvcHVwLCBzZXRTaG93UG9wdXBdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGlmICghc3VtbWl0IHx8ICF0aWNrZXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFRpY2tldFN0YXR1c0RhdGEodGlja2V0LCBpc1Bhc3QpO1xuICBjb25zdCByb2xlID0gZ2V0VGlja2V0Um9sZSh0aWNrZXQpO1xuICBjb25zdCB0eXBlID0gc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKFxuICAgICh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGUuaWRcbiAgKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzLnR5cGUgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cy50eXBlID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG5cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgICh0aWNrZXQudGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlKSAmJlxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyPy5pZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgY29uc3QgdG9nZ2xlUG9wdXAgPSAoKSA9PiBzZXRTaG93UG9wdXAoIXNob3dQb3B1cCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0FjdGl2ZSkgcmV0dXJuO1xuXG4gICAgdG9nZ2xlUG9wdXAoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQb3B1cENsb3NlID0gKCkgPT4gdG9nZ2xlUG9wdXAoKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICByb2xlLFxuICAgIHR5cGUsXG4gICAgaXNTdW1taXRQYXN0OiBpc1Bhc3QsXG4gICAgaXNTdW1taXRTdGFydGVkOiBpc1N0YXJ0ZWQsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzUmVhc3NpZ25hYmxlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIHNob3dQb3B1cCxcbiAgICBzZXRTaG93UG9wdXAsXG4gICAgdG9nZ2xlUG9wdXAsXG4gICAgaGFuZGxlQ2xpY2ssXG4gICAgaGFuZGxlUG9wdXBDbG9zZVxuICB9O1xufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fUm9pbVJcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fb29JMFZcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19faW1famhcIjtcbnZhciBfNCA9IFwiY29udGFpbmVyX19fTjNZNFhcIjtcbnZhciBfNSA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX0pXMmxPXCI7XG52YXIgXzYgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1Y5Z0hDXCI7XG52YXIgXzcgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JHcFlWXCI7XG52YXIgXzggPSBcImZpbHRlckRhdGVMYWJlbF9fX2lmRDRwXCI7XG52YXIgXzkgPSBcImZpbHRlckljb25fX19sMjFLSVwiO1xudmFyIF9hID0gXCJmaWx0ZXJMYWJlbF9fX19QMHduXCI7XG52YXIgX2IgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19WbWRHcVwiO1xudmFyIF9jID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19WdUhDSlwiO1xudmFyIF9kID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fYXJCdlFcIjtcbnZhciBfZSA9IFwibGFiZWxfX195TkZ5alwiO1xudmFyIF9mID0gXCJzaG93RGF0ZVBpY2tlcl9fX1VwUWJwXCI7XG52YXIgXzEwID0gXCJzb3J0Q29udGFpbmVyX19fbFJzalVcIjtcbnZhciBfMTEgPSBcInNvcnRJY29uX19fZlZWNUtcIjtcbnZhciBfMTIgPSBcInNvcnRMYWJlbF9fX1VxTFRDXCI7XG52YXIgXzEzID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX2NtbkJEXCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjb250YWluZXJcIiwgXzUgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF83IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF84IGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF85IGFzIFwiZmlsdGVySWNvblwiLCBfYSBhcyBcImZpbHRlckxhYmVsXCIsIF9iIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfYyBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZCBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgX2UgYXMgXCJsYWJlbFwiLCBfZiBhcyBcInNob3dEYXRlUGlja2VyXCIsIF8xMCBhcyBcInNvcnRDb250YWluZXJcIiwgXzExIGFzIFwic29ydEljb25cIiwgXzEyIGFzIFwic29ydExhYmVsXCIsIF8xMyBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm11bHRpc3RlcENsb3NlSWNvbl9fX3FjNk5EXCI7XG52YXIgXzIgPSBcIm11bHRpc3RlcENvbnRhaW5lcl9fX2RQYVM1XCI7XG5leHBvcnQgeyBfMSBhcyBcIm11bHRpc3RlcENsb3NlSWNvblwiLCBfMiBhcyBcIm11bHRpc3RlcENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzMgPSBcImNvcHlJY29uX19fTmtIR09cIjtcbnZhciBfNCA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfNSA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF82ID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgXzcgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzggPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzkgPSBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJfX192cW9oTlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZF9fX0hYbWR3XCI7XG52YXIgX2IgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2MgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfZCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgX2UgPSBcInJldmVyc2VkX19fREZlYV9cIjtcbnZhciBfZiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTEgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMiA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMyA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTUgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJibGFja0J1dHRvblwiLCBfMyBhcyBcImNvcHlJY29uXCIsIF80IGFzIFwiZGlzcGxheV9ub25lXCIsIF81IGFzIFwibGFiZWxcIiwgXzYgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfNyBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfOCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfOSBhcyBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJcIiwgX2EgYXMgXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZFwiLCBfYiBhcyBcIm9yZGVyV3JhcHBlclwiLCBfYyBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF9kIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfZSBhcyBcInJldmVyc2VkXCIsIF9mIGFzIFwidGFiQnV0dG9uc1wiLCBfMTAgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xMSBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzEyIGFzIFwidGlja2V0Tm9cIiwgXzEzIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMTQgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xNSBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzE2IGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzIgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzMgPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfNCA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgXzUgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfNiA9IFwicmVmdW5kSGVhZGVyc19fX0hWSW1rXCI7XG52YXIgXzcgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF84ID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfOSA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfYSA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgX2IgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfYyA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8yIGFzIFwiY2FuY2VsQnV0dG9uXCIsIF8zIGFzIFwiY29udGludWVCdXR0b25cIiwgXzQgYXMgXCJkZWxldGVJY29uXCIsIF81IGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgXzYgYXMgXCJyZWZ1bmRIZWFkZXJzXCIsIF83IGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfOCBhcyBcInJlZnVuZFRleHRcIiwgXzkgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgX2EgYXMgXCJzdWNjZXNzTXNnXCIsIF9iIGFzIFwic3VjY2Vzc01zZzJcIiwgX2MgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNhbmNlbEJ0bl9fX2dnQ2RqXCI7XG52YXIgXzYgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNyA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzggPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOSA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF9hID0gXCJmb290ZXJfX19OSU03ZFwiO1xudmFyIF9iID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9jID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2QgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2UgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2YgPSBcInNhdmVCdG5fX19OcE9FVlwiO1xudmFyIF8xMCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgXzExID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMyA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTQgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNhbmNlbEJ0blwiLCBfNiBhcyBcImNsb3NlQnRuXCIsIF83IGFzIFwiY29weUJ0blwiLCBfOCBhcyBcImRlbGVnYXRlZFRvXCIsIF85IGFzIFwiZG93bmxvYWRCdG5cIiwgX2EgYXMgXCJmb290ZXJcIiwgX2IgYXMgXCJoZWFkZXJcIiwgX2MgYXMgXCJvcmRlck51bWJlclwiLCBfZCBhcyBcInFyQ29kZVwiLCBfZSBhcyBcInFyTm90ZVwiLCBfZiBhcyBcInNhdmVCdG5cIiwgXzEwIGFzIFwic2VuZEJ0blwiLCBfMTEgYXMgXCJzdGF0dXNcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xNCBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibm9PcmRlcnNGb3VuZF9fX0FvZzJwXCI7XG52YXIgXzIgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1oxOVBtXCI7XG52YXIgXzMgPSBcIndpZGdldEhlYWRlcl9fX3lZNWdlXCI7XG5leHBvcnQgeyBfMSBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzIgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzMgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsInBMaW1pdCIsImdldElkVG9rZW4iLCJJZFRva2VuVmVyaWZpZXIiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJGSUZUWV9QRVJfUEFHRSIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiU0VUX1NUQVRFIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXIiLCJ0eXBlIiwicHVzaCIsImNvbmNhdCIsIm5hbWUiLCJsb3dlciIsInVwcGVyIiwidmFsdWUiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJuZXh0IiwiZ2V0U3RhdGUiLCJfcmVmMiIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwiY2F0Y2giLCJQcm9taXNlIiwicmVqZWN0IiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJmaWx0ZXJzIiwiaWQiLCJ0aGVuIiwicGF5bG9hZCIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWYzIiwiX3JlZjQiLCJ1c2VyU3RhdGUiLCJ1c2VyUHJvZmlsZSIsImV4cGFuZCIsImZpZWxkcyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjUiLCJfcmVmNiIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY3IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjgiLCJfcmVmOSIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjEwIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJyZXMiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjExIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMiIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTMiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTQiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiU3RhY2siLCJ1c2VUcmFuc2xhdGlvbiIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0IiwidCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsInZhbCIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwib25DbGljayIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5Iiwib25DaGFuZ2UiLCJwcm9wVHlwZXMiLCJmdW5jIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJCb3giLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsImtleSIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwibGFiZWwiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImNsYXNzTmFtZXMiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsInN0eWxlIiwiRHJhd2VyIiwiQ29udGFpbmVyIiwiTXVsdGlTdGVwU2xpZGVyIiwib3BlbiIsIm9uQ2xvc2VTbGlkZXIiLCJhbmNob3IiLCJvbkNsb3NlIiwiUGFwZXJQcm9wcyIsIm11bHRpc3RlcENvbnRhaW5lciIsIm11bHRpc3RlcENsb3NlSWNvbiIsIm5vZGUiLCJib29sIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsInNlYXJjaE5leHQiLCJzZXRTZWFyY2hOZXh0Iiwic2V0RmlsdGVyIiwic2V0U29ydCIsImZldGNoRGF0YSIsIl9yZXMkcmVzcG9uc2UiLCJ3aWRnZXRIZWFkZXIiLCJtZCIsImxnIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0YUxlbmd0aCIsInNjcm9sbFRocmVzaG9sZCIsIm51bWJlciIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm9iamVjdCIsImFycmF5T2YiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInJlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNUb1JlZnVuZCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwidmFyaWFudCIsInNpemUiLCJkaXNhYmxlZCIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsInRpY2tldE93bmVyRW1haWwiLCJpc19hY3RpdmUiLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwic2VsZWN0VG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsIm9uVmlld0xlc3MiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJDaGVja2JveCIsIlRpY2tldFN0YXR1cyIsIk9yZGVyTnVtYmVyIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl9vcGVuVGlja2V0JG93bmVyIiwib3BlblRpY2tldCIsInNldE9wZW5UaWNrZXQiLCJyZWFzc2lnbkRhdGUiLCJvcmRlcldyYXBwZXIiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiY2hlY2tlZCIsInRpY2tldE5vIiwiY29weSIsInRydW5jYXRlZCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwiZGVmYXVsdFdpZHRoIiwicmV2ZXJzZWQiLCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZCIsIm9yZGVyVGlja2V0Tm9Db250YWluZXIiLCJjb3B5SWNvbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiaGFuZGxlQ2hhbmdlIiwiXyIsIm5ld1ZhbHVlIiwic2V0UmVmdW5kUmVxdWVzdGVkIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjYW5jZWxUaWNrZXRzVG9SZWZ1bmQiLCJzZWxlY3RBbGxUaWNrZXRzIiwicmVmdW5kYWJsZVRpY2tldHMiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwicmVmdW5kQnV0dG9ucyIsIm9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRPcmRlclRpY2tldHMiLCJnZXRGb3JtYXR0ZWREYXRlIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJsYXN0X3BhZ2UiLCJ0aGVtZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsIm1lbWJlclRpY2tldHMiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY3VycmVudF9wYWdlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJvcmRlclRpY2tldENvbnRhaW5lciIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ0aWNrZXRzX3RvdGFsIiwiRGVsZXRlT3V0bGluZUljb24iLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJvblJlbW92ZSIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsImRlbGV0ZUljb24iLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNsb3NlU2xpZGVyIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJyZWZ1bmRUZXh0IiwicmVmdW5kRXJyb3JNc2ciLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJyZWZ1bmRIZWFkZXJzIiwiYXJyYXkiLCJUZXh0RmllbGQiLCJBdXRvY29tcGxldGUiLCJUeXBvZ3JhcGh5IiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJmb3JtaWsiLCJzdW1taXRJZCIsImlzUmVxdWlyZWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwiZXJyb3JzIiwidmFsdWVzIiwidG91Y2hlZCIsInNldEZpZWxkVG91Y2hlZCIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsIkJvb2xlYW4iLCJoZWxwZXJUZXh0IiwidW5kZWZpbmVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsIm9uQmx1ciIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJzb21lIiwidGl0bGUiLCJyZW5kZXJJbnB1dCIsImZ1bGxXaWR0aCIsInJlcXVpcmVkIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsInYiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5IiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwiZW50cmllcyIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQmx1ciIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwid3JhcHBlciIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJUaWNrZXRPd25lckZpZWxkcyIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsImFsbG93c0RlbGVnYXRpb24iLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsInN1YlF1ZXN0aW9uIiwic3ViUXVlc3Rpb25TbHVnIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsIm1hdGNoIiwic2NoIiwicGFyc2VBbnN3ZXJzIiwib25seVJlbGV2YW50IiwiYXJndW1lbnRzIiwiaW5pdGlhbFZhbHVlcyIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJBbnN3ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiaXNWYWxpZCIsInN1Ym1pdENvdW50IiwiZXJyb3JBcnJheSIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJvblN1Ym1pdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImd1dHRlckJvdHRvbSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZm9vdGVyIiwic2F2ZUJ0biIsImlzU3VibWl0dGluZyIsImNhbmNlbEJ0biIsImluZm9Ob3RlIiwiUVJDb2RlIiwiSWNvbkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ1RpdGxlIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiQ2xvc2UiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJNSUxMSVNFQ19UT19TRUMiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJjdXJyZW50VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImlzT3BlbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsImVyciIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsInNldFRpbWVvdXQiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0Iiwic3VidGl0bGUiLCJxckNvZGUiLCJtYXhXaWR0aCIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJvcmRlck51bWJlciIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJfdGlja2V0JHJlZnVuZFJlcXVlc3QiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkb3duZXIzIiwiX3RpY2tldCRvd25lcjQiLCJnZXRTdGF0dXMiLCJmaW5hbF9hbW91bnQiLCJyZWZ1bmRlZF9hbW91bnQiLCJhbGxvd3NEZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJpMThuIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJsb2FkaW5nIiwiaXNPcmRlckxvYWRpbmciLCJvcmRlcnNfbGFzdF9wYWdlIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiVFdPX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIm1vbWVudCIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJhbW91bnQiLCJ0aWNrZXRfdHlwZXMiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJNYXRoIiwicm91bmQiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJiYWRnZSIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImpvaW4iLCJnZXRUaWNrZXRUeXBlIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwicnIiLCJfdGlja2V0JG93bmVyNSIsIl90aWNrZXQkb3duZXI2Iiwic2hvd1BvcHVwIiwic2V0U2hvd1BvcHVwIiwidG9nZ2xlUG9wdXAiLCJoYW5kbGVDbGljayIsImhhbmRsZVBvcHVwQ2xvc2UiLCJpc1N1bW1pdFN0YXJ0ZWQiLCJQcm92aWRlciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93Iiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9