my-orders-tickets-widget 1.0.0-beta.7 → 1.0.0-beta.9

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
@@ -32,6 +32,7 @@ __webpack_require__.r(__webpack_exports__);
32
32
  /* harmony export */ GET_TICKETS_BY_ORDER_ERROR: () => (/* binding */ GET_TICKETS_BY_ORDER_ERROR),
33
33
  /* harmony export */ GET_TICKET_DETAILS: () => (/* binding */ GET_TICKET_DETAILS),
34
34
  /* harmony export */ GET_USER_ORDERS: () => (/* binding */ GET_USER_ORDERS),
35
+ /* harmony export */ RECEIVE_EXTRA_QUESTIONS: () => (/* binding */ RECEIVE_EXTRA_QUESTIONS),
35
36
  /* harmony export */ RECEIVE_MARKETING_SETTINGS: () => (/* binding */ RECEIVE_MARKETING_SETTINGS),
36
37
  /* harmony export */ REFUND_ORDER: () => (/* binding */ REFUND_ORDER),
37
38
  /* harmony export */ REFUND_TICKET: () => (/* binding */ REFUND_TICKET),
@@ -46,6 +47,7 @@ __webpack_require__.r(__webpack_exports__);
46
47
  /* harmony export */ STOP_LOADING_IDP_PROFILE: () => (/* binding */ STOP_LOADING_IDP_PROFILE),
47
48
  /* harmony export */ TICKET_ATTENDEE_KEYS: () => (/* binding */ TICKET_ATTENDEE_KEYS),
48
49
  /* harmony export */ UPDATE_IDP_PROFILE: () => (/* binding */ UPDATE_IDP_PROFILE),
50
+ /* harmony export */ getExtraQuestions: () => (/* binding */ getExtraQuestions),
49
51
  /* harmony export */ getSortDirection: () => (/* binding */ getSortDirection),
50
52
  /* harmony export */ getTicketsByOrder: () => (/* binding */ getTicketsByOrder),
51
53
  /* harmony export */ getUserOrders: () => (/* binding */ getUserOrders),
@@ -86,6 +88,7 @@ const GET_TICKETS_BY_ORDER = "GET_TICKETS_BY_ORDER";
86
88
  const GET_TICKETS_BY_ORDER_ERROR = "GET_TICKETS_BY_ORDER_ERROR";
87
89
  const GET_ORDER_TICKET_DETAILS = "GET_ORDER_TICKET_DETAILS";
88
90
  const GET_TICKET_DETAILS = "GET_TICKET_DETAILS";
91
+ const RECEIVE_EXTRA_QUESTIONS = "RECEIVE_EXTRA_QUESTIONS";
89
92
  const TICKET_ATTENDEE_KEYS = {
90
93
  email: "attendee_email",
91
94
  firstName: "attendee_first_name",
@@ -246,8 +249,10 @@ const getTicketsByOrder = _ref6 => {
246
249
  const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_1__.getAccessTokenSafely)().catch(() => Promise.reject());
247
250
  const params = {
248
251
  access_token: accessToken,
249
- expand: "refund_requests,owner,owner.extra_questions,badge,badge.features,ticket_type",
252
+ expand: "refund_requests,owner,owner.extra_questions,owner.extra_questions.question,badge,badge.features,ticket_type,order",
250
253
  order: "+id",
254
+ relations: "owner.extra_questions.question.none",
255
+ fields: "owner.extra_questions.question.name,owner.extra_questions.question.type",
251
256
  page,
252
257
  per_page: perPage
253
258
  };
@@ -326,6 +331,31 @@ const refundTicket = _ref9 => {
326
331
 
327
332
  // SUMMIT ACTIONS
328
333
  const setSummit = summit => async dispatch => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_0__.createAction)(SET_SUMMIT)(summit));
334
+ const getExtraQuestions = () => async (dispatch, getState, _ref11) => {
335
+ let {
336
+ apiBaseUrl
337
+ } = _ref11;
338
+ const {
339
+ widgetState: {
340
+ summit,
341
+ user: {
342
+ userProfile
343
+ }
344
+ }
345
+ } = getState();
346
+ const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_1__.getAccessTokenSafely)().catch(() => Promise.reject());
347
+ const params = {
348
+ page: 1,
349
+ per_page: 20,
350
+ expand: "*sub_question_rules,*sub_question,*values",
351
+ access_token: accessToken,
352
+ "filter[]": "tickets_exclude_inactives==true"
353
+ };
354
+ const endpoint = `${apiBaseUrl}/api/v1/summits/${summit.id}/attendees/${userProfile.attendee_id}/allowed-extra-questions`;
355
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_0__.getRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_0__.createAction)(RECEIVE_EXTRA_QUESTIONS), endpoint, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_0__.authErrorHandler)(params)(dispatch).then(() => {
356
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_0__.stopLoading)());
357
+ });
358
+ };
329
359
 
330
360
  /***/ }),
331
361
 
@@ -900,6 +930,7 @@ function MyOrdersTickets() {
900
930
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
901
931
  const {
902
932
  summit,
933
+ user,
903
934
  memberOrders,
904
935
  orders_current_page,
905
936
  orders_per_page,
@@ -929,6 +960,11 @@ function MyOrdersTickets() {
929
960
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
930
961
  fetchData();
931
962
  }, [filter, sort, searchNext]);
963
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
964
+ if (user && summit) {
965
+ dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.getExtraQuestions)());
966
+ }
967
+ }, [user, summit]);
932
968
  const onFilter = filter => {
933
969
  setSort({});
934
970
  setFilter(filter);
@@ -1403,8 +1439,12 @@ __webpack_require__.r(__webpack_exports__);
1403
1439
  /* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
1404
1440
  /* harmony import */ var _OrderNumber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./OrderNumber */ "./src/components/OrdersList/OrderNumber.js");
1405
1441
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1406
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1407
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
1442
+ /* harmony import */ var _TicketDetail__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../TicketDetail */ "./src/components/TicketDetail/index.js");
1443
+ /* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
1444
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1445
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__);
1446
+
1447
+
1408
1448
 
1409
1449
 
1410
1450
 
@@ -1415,98 +1455,115 @@ __webpack_require__.r(__webpack_exports__);
1415
1455
 
1416
1456
 
1417
1457
 
1418
- function OrderListTickets(_ref) {
1458
+ const TicketCTAs = _ref => {
1419
1459
  let {
1420
- ticket,
1421
- summit
1460
+ isIncomplete,
1461
+ isUnassigned,
1462
+ isReassignable,
1463
+ onOpenClick
1422
1464
  } = _ref;
1423
1465
  const {
1424
1466
  t
1425
1467
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1426
- const now = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.useNow)();
1427
- const getActiveButtonActions = ticket => {
1428
- if (ticket.owner?.status === "Incomplete") {
1429
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1430
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.viewFinishTicketButton,
1431
- children: t("ticket_status.finish_ticket")
1432
- });
1433
- }
1434
- if (ticket.owner?.status === "Complete") {
1435
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1436
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.viewFinishTicketButton,
1437
- children: t("ticket_status.view_ticket")
1438
- });
1439
- }
1440
- return null;
1441
- };
1442
- const showReassignButton = () => {
1443
- const reassignDate = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getSummitReassignDate)(summit);
1444
- const isReassignable = reassignDate > now;
1445
- return isReassignable ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1468
+ if (isUnassigned) {
1469
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1470
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.assignTicketButton,
1471
+ children: t("ticket_status.assign_ticket")
1472
+ });
1473
+ }
1474
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
1475
+ sx: {
1476
+ justifyContent: "space-between",
1477
+ width: "100%"
1478
+ },
1479
+ alignItems: "center",
1480
+ direction: "row",
1481
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1482
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.viewFinishTicketButton,
1483
+ onClick: onOpenClick,
1484
+ children: isIncomplete ? t("ticket_status.finish_ticket") : t("ticket_status.view_ticket")
1485
+ }), isReassignable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1446
1486
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.reassignButton,
1447
1487
  children: t("ticket_status.reassign_ticket")
1448
- }) : "";
1449
- };
1450
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1488
+ })]
1489
+ });
1490
+ };
1491
+ const OrderListTickets = _ref2 => {
1492
+ let {
1493
+ ticket,
1494
+ summit
1495
+ } = _ref2;
1496
+ const {
1497
+ t
1498
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1499
+ const now = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.useNow)();
1500
+ const [openTicket, setOpenTicket] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
1501
+ const {
1502
+ isUnassigned,
1503
+ isIncomplete
1504
+ } = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_10__.useTicketDetails)(ticket);
1505
+ const reassignDate = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getSummitReassignDate)(summit);
1506
+ const isReassignable = reassignDate > now;
1507
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1451
1508
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.orderWrapper,
1452
1509
  container: true,
1453
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1510
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1454
1511
  xs: 7,
1455
1512
  padding: 2,
1456
1513
  item: true,
1457
1514
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketTicketType,
1458
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h4", {
1515
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)("h4", {
1459
1516
  children: ticket.ticket_type?.name
1460
1517
  })
1461
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1518
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1462
1519
  xs: 5,
1463
1520
  padding: 2,
1464
1521
  item: true
1465
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1522
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1466
1523
  xs: 12,
1467
1524
  sx: {
1468
1525
  px: 2,
1469
1526
  pb: 2
1470
1527
  },
1471
1528
  item: true,
1472
- children: [ticket.owner?.email ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {
1473
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1529
+ children: [ticket.owner?.email ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.Fragment, {
1530
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1474
1531
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.label,
1475
1532
  children: [t("ticket_status.assigned_to"), ":"]
1476
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1533
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1477
1534
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketOwnerEmail,
1478
1535
  children: ticket.owner?.email
1479
1536
  })]
1480
- }) : ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("span", {
1537
+ }) : ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)("span", {
1481
1538
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketOwnerEmail,
1482
1539
  children: t("ticket_status.attendee_status_unassigned")
1483
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("span", {
1540
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)("span", {
1484
1541
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketNo,
1485
- children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderNumber__WEBPACK_IMPORTED_MODULE_7__["default"], {
1542
+ children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_OrderNumber__WEBPACK_IMPORTED_MODULE_7__["default"], {
1486
1543
  number: ticket.number,
1487
1544
  copy: true,
1488
1545
  truncated: true
1489
1546
  })]
1490
1547
  })]
1491
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1548
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1492
1549
  container: true,
1493
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1550
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1494
1551
  container: true,
1495
1552
  direction: "row",
1496
1553
  xs: 12,
1497
1554
  lg: 6,
1498
1555
  alignItems: "center",
1499
1556
  item: true,
1500
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_6__["default"], {
1557
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_6__["default"], {
1501
1558
  ticket: ticket
1502
1559
  })
1503
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1560
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1504
1561
  padding: 2,
1505
1562
  xs: 12,
1506
1563
  lg: 6,
1507
1564
  container: true,
1508
1565
  item: true,
1509
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1566
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1510
1567
  item: true,
1511
1568
  container: true,
1512
1569
  align: "center",
@@ -1514,23 +1571,21 @@ function OrderListTickets(_ref) {
1514
1571
  justifyContent: "space-between"
1515
1572
  },
1516
1573
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketActionButtons,
1517
- children: ticket.is_active && (ticket.owner ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
1518
- sx: {
1519
- justifyContent: "space-between",
1520
- width: "100%"
1521
- },
1522
- alignItems: "center",
1523
- direction: "row",
1524
- children: [getActiveButtonActions(ticket), showReassignButton()]
1525
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1526
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.assignTicketButton,
1527
- children: t("ticket_status.assign_ticket")
1528
- }))
1574
+ children: ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(TicketCTAs, {
1575
+ isUnassigned: isUnassigned,
1576
+ isIncomplete: isIncomplete,
1577
+ isReassignable: isReassignable,
1578
+ onOpenClick: () => setOpenTicket(ticket)
1579
+ })
1529
1580
  })
1530
1581
  })]
1582
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_TicketDetail__WEBPACK_IMPORTED_MODULE_9__["default"], {
1583
+ summit: summit,
1584
+ ticket: openTicket,
1585
+ onClose: () => setOpenTicket(null)
1531
1586
  })]
1532
1587
  }, ticket.id);
1533
- }
1588
+ };
1534
1589
  OrderListTickets.propTypes = {
1535
1590
  ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1536
1591
  id: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
@@ -1572,16 +1627,23 @@ __webpack_require__.r(__webpack_exports__);
1572
1627
 
1573
1628
 
1574
1629
 
1630
+ const defaultWidth = 90;
1575
1631
  function OrderNumber(_ref) {
1576
1632
  let {
1577
1633
  number,
1578
1634
  copy = false,
1579
- truncated = false
1635
+ truncated = false,
1636
+ reversed = false,
1637
+ width = defaultWidth
1580
1638
  } = _ref;
1639
+ const classNames = `${truncated && _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.orderTicketNumberTruncated} ${reversed && _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.reversed}`;
1581
1640
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
1582
1641
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.orderTicketNoContainer,
1583
1642
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
1584
- className: truncated && _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.orderTicketNumberTruncated,
1643
+ className: classNames,
1644
+ style: {
1645
+ width
1646
+ },
1585
1647
  children: number
1586
1648
  }), copy && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)((_mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2___default()), {
1587
1649
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.copyIcon,
@@ -1591,7 +1653,10 @@ function OrderNumber(_ref) {
1591
1653
  }
1592
1654
  OrderNumber.propTypes = {
1593
1655
  number: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
1594
- copy: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
1656
+ copy: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
1657
+ truncated: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
1658
+ reversed: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
1659
+ width: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number)
1595
1660
  };
1596
1661
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderNumber);
1597
1662
 
@@ -1903,10 +1968,10 @@ OrdersList.propTypes = {
1903
1968
 
1904
1969
  /***/ }),
1905
1970
 
1906
- /***/ "./src/components/TicketStatus/index.js":
1907
- /*!**********************************************!*\
1908
- !*** ./src/components/TicketStatus/index.js ***!
1909
- \**********************************************/
1971
+ /***/ "./src/components/TicketDetail/components/CompanyField/index.js":
1972
+ /*!**********************************************************************!*\
1973
+ !*** ./src/components/TicketDetail/components/CompanyField/index.js ***!
1974
+ \**********************************************************************/
1910
1975
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1911
1976
 
1912
1977
  __webpack_require__.r(__webpack_exports__);
@@ -1921,197 +1986,1813 @@ __webpack_require__.r(__webpack_exports__);
1921
1986
  /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1922
1987
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1923
1988
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1924
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketStatus/styles.module.scss");
1925
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1926
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
1989
+ /* harmony import */ var openstack_uicore_foundation_lib_utils_query_actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! openstack-uicore-foundation/lib/utils/query-actions */ "openstack-uicore-foundation/lib/utils/query-actions");
1990
+ /* harmony import */ var openstack_uicore_foundation_lib_utils_query_actions__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_utils_query_actions__WEBPACK_IMPORTED_MODULE_4__);
1991
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../constants */ "./src/components/TicketDetail/constants.js");
1992
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1993
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
1994
+ /**
1995
+ * Copyright 2017 OpenStack Foundation
1996
+ * Licensed under the Apache License, Version 2.0 (the "License");
1997
+ * you may not use this file except in compliance with the License.
1998
+ * You may obtain a copy of the License at
1999
+ * http://www.apache.org/licenses/LICENSE-2.0
2000
+ * Unless required by applicable law or agreed to in writing, software
2001
+ * distributed under the License is distributed on an "AS IS" BASIS,
2002
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2003
+ * See the License for the specific language governing permissions and
2004
+ * limitations under the License.
2005
+ * */
1927
2006
 
1928
2007
 
1929
2008
 
1930
2009
 
1931
2010
 
1932
2011
 
1933
- function TicketStatus(_ref) {
2012
+
2013
+
2014
+ const CompanyField = _ref => {
1934
2015
  let {
1935
- ticket
2016
+ formik,
2017
+ summitId,
2018
+ isRequired
1936
2019
  } = _ref;
1937
2020
  const {
1938
2021
  t
1939
2022
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1940
- const isActive = ticket.is_active;
1941
- const refund_requests = ticket.refund_requests.find(r => r.status === "Requested");
1942
- const ticket_status_incomplete = ticket.owner?.status === "Incomplete";
1943
- const ticket_unassigned = ticket.owner_id === 0;
1944
- const ticket_complete = ticket.owner && ticket.owner?.status === "Complete";
1945
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Container, {
1946
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.ticketStatusContainer,
1947
- children: isActive ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
1948
- children: [refund_requests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1949
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonRefundRequested}`,
1950
- children: t("ticket_status.status_refund_requested")
1951
- }), ticket_status_incomplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1952
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonIncomplete}`,
1953
- children: t("ticket_status.status_incomplete")
1954
- }), ticket_unassigned && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1955
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonUnassigned}`,
1956
- children: t("ticket_status.status_unassigned")
1957
- }), ticket_complete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1958
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonComplete}`,
1959
- children: t("ticket_status.status_complete")
1960
- })]
1961
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1962
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonCancelled}`,
1963
- children: t("ticket_status.status_cancelled")
1964
- })
1965
- });
1966
- }
1967
- TicketStatus.propTypes = {
1968
- ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1969
- owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1970
- status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
2023
+ const [inputValue, setInputValue] = react__WEBPACK_IMPORTED_MODULE_0___default().useState("");
2024
+ const [options, setOptions] = react__WEBPACK_IMPORTED_MODULE_0___default().useState([]);
2025
+ const {
2026
+ errors,
2027
+ values,
2028
+ touched,
2029
+ setFieldTouched,
2030
+ setFieldValue
2031
+ } = formik;
2032
+ const name = _constants__WEBPACK_IMPORTED_MODULE_5__.TICKET_ATTENDEE_KEYS.company;
2033
+ const value = values[name];
2034
+ const error = touched[name] && Boolean(errors[name]);
2035
+ const helperText = touched[name] && errors[name];
2036
+ react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(() => {
2037
+ if (inputValue === "") {
2038
+ setOptions(value ? [value] : []);
2039
+ return undefined;
2040
+ }
2041
+ (0,openstack_uicore_foundation_lib_utils_query_actions__WEBPACK_IMPORTED_MODULE_4__.queryRegistrationCompanies)(summitId, inputValue, results => {
2042
+ let newOptions = [];
2043
+ if (value) {
2044
+ newOptions = [value];
2045
+ }
2046
+ if (results) {
2047
+ newOptions = [...newOptions, ...results];
2048
+ }
2049
+ setOptions(newOptions);
2050
+ });
2051
+ return undefined;
2052
+ }, [value, inputValue]);
2053
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Autocomplete, {
2054
+ name: name,
2055
+ options: options,
2056
+ autoComplete: true,
2057
+ freeSolo: true,
2058
+ includeInputInList: true,
2059
+ filterSelectedOptions: true,
2060
+ value: value,
2061
+ onBlur: () => setFieldTouched(name, true, true),
2062
+ getOptionLabel: option => {
2063
+ // Value selected with enter, right from the input
2064
+ if (typeof option === "string") {
2065
+ return option;
2066
+ }
2067
+ // Add "xxx" option created dynamically
2068
+ if (option.inputValue) {
2069
+ return option.inputValue;
2070
+ }
2071
+ // Regular option
2072
+ return option.name;
2073
+ },
2074
+ onChange: (event, newValue) => {
2075
+ const tmpValue = newValue?.inputValue || newValue?.name || newValue;
2076
+ setOptions(tmpValue ? [tmpValue, ...options] : options);
2077
+ setFieldValue(name, tmpValue);
2078
+ },
2079
+ onInputChange: (event, newInputValue) => {
2080
+ setInputValue(newInputValue);
2081
+ },
2082
+ filterOptions: (options, params) => {
2083
+ const {
2084
+ inputValue
2085
+ } = params;
2086
+ const filtered = [...options];
2087
+ // Suggest the creation of a new value
2088
+ const isExisting = options.some(option => inputValue === option.title);
2089
+ if (inputValue !== "" && !isExisting) {
2090
+ filtered.push({
2091
+ inputValue,
2092
+ name: `Select "${inputValue}"`
2093
+ });
2094
+ }
2095
+ return filtered;
2096
+ },
2097
+ renderInput: params => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.TextField
2098
+ /* eslint-disable-next-line react/jsx-props-no-spreading */, {
2099
+ ...params,
2100
+ label: t("ticket_detail.attendee_company"),
2101
+ fullWidth: true,
2102
+ required: isRequired,
2103
+ helperText: helperText,
2104
+ error: error
1971
2105
  }),
1972
- refund_requests: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1973
- })
2106
+ renderOption: (props, option) => {
2107
+ const {
2108
+ key,
2109
+ ...optionProps
2110
+ } = props;
2111
+ return (
2112
+ /*#__PURE__*/
2113
+ // eslint-disable-next-line react/jsx-props-no-spreading
2114
+ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("li", {
2115
+ ...optionProps,
2116
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Typography, {
2117
+ variant: "body2",
2118
+ sx: {
2119
+ color: "text.secondary"
2120
+ },
2121
+ children: option.name
2122
+ })
2123
+ }, key)
2124
+ );
2125
+ }
2126
+ });
1974
2127
  };
1975
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketStatus);
2128
+ CompanyField.propTypes = {
2129
+ formik: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
2130
+ summitId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number).isRequired
2131
+ };
2132
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CompanyField);
1976
2133
 
1977
2134
  /***/ }),
1978
2135
 
1979
- /***/ "./src/reducer.js":
1980
- /*!************************!*\
1981
- !*** ./src/reducer.js ***!
1982
- \************************/
2136
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/CheckboxListQuestionField.js":
2137
+ /*!*************************************************************************************************************!*\
2138
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/components/CheckboxListQuestionField.js ***!
2139
+ \*************************************************************************************************************/
1983
2140
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1984
2141
 
1985
2142
  __webpack_require__.r(__webpack_exports__);
1986
2143
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1987
2144
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1988
2145
  /* harmony export */ });
1989
- /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openstack-uicore-foundation/lib/security/actions */ "openstack-uicore-foundation/lib/security/actions");
1990
- /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__);
1991
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
1992
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
1993
- /**
1994
- * Copyright 2024 OpenStack Foundation
1995
- * Licensed under the Apache License, Version 2.0 (the "License");
1996
- * you may not use this file except in compliance with the License.
1997
- * You may obtain a copy of the License at
1998
- * http://www.apache.org/licenses/LICENSE-2.0
1999
- * Unless required by applicable law or agreed to in writing, software
2000
- * distributed under the License is distributed on an "AS IS" BASIS,
2001
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2002
- * See the License for the specific language governing permissions and
2003
- * limitations under the License.
2004
- * */
2146
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2147
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2148
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2149
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2150
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2151
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
2152
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js");
2153
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2154
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
2005
2155
 
2006
2156
 
2007
2157
 
2008
- const DEFAULT_STATE = {
2009
- summit: null,
2010
- user: {},
2011
- widgetLoading: false,
2012
- memberOrders: [],
2013
- errors: {},
2014
- loading: false,
2015
- isOrderLoading: false,
2016
- orders_current_page: 1,
2017
- orders_last_page: 1,
2018
- orders_per_page: 5,
2019
- orders_total: 0,
2020
- ticket_current_page: 1,
2021
- ticket_last_page: 1,
2022
- ticket_per_page: 5,
2023
- ticket_total: 0
2024
- };
2025
- const WidgetReducer = function () {
2026
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE;
2158
+
2159
+
2160
+ const CheckboxListQuestionField = _ref => {
2027
2161
  let {
2028
- type,
2029
- payload
2030
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2031
- switch (type) {
2032
- case openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__.LOGOUT_USER:
2033
- case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_STATE:
2034
- return DEFAULT_STATE;
2035
- case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_FILTER:
2036
- return {
2037
- ...state,
2038
- orders_current_page: 1,
2039
- orders_last_page: 1
2040
- };
2041
- case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_SUMMIT:
2042
- return {
2043
- ...state,
2044
- summit: payload
2045
- };
2046
- case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_USER:
2047
- return {
2048
- ...state,
2049
- user: payload
2050
- };
2051
- case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_USER_ORDERS:
2052
- {
2053
- const {
2054
- memberOrders
2055
- } = state;
2056
- const {
2057
- data,
2058
- total,
2059
- current_page
2060
- } = payload.response;
2061
- return {
2062
- ...state,
2063
- memberOrders: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...memberOrders, ...data],
2064
- orders_total: total,
2065
- orders_current_page: current_page
2066
- };
2067
- }
2068
- case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_TICKETS_BY_ORDER:
2069
- {
2070
- const {
2071
- memberOrders
2072
- } = state;
2073
- const {
2074
- data,
2075
- total,
2076
- current_page,
2077
- last_page
2078
- } = payload.response;
2079
- const formerOrder = memberOrders.find(o => o.id === data[0]?.order_id);
2080
- const updatedOrder = {
2081
- ...formerOrder,
2082
- memberTickets: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...formerOrder.memberTickets, ...data],
2083
- tickets_page_current: current_page,
2084
- tickets_page_last: last_page,
2085
- tickets_total: total
2086
- };
2087
- return {
2088
- ...state,
2089
- memberOrders: memberOrders.map(mo => mo.id === updatedOrder.id ? updatedOrder : mo)
2090
- };
2091
- }
2092
- default:
2093
- return state;
2094
- }
2162
+ question,
2163
+ questionClassName = "",
2164
+ isDisabled = false,
2165
+ children,
2166
+ value,
2167
+ onChange,
2168
+ setFieldValue,
2169
+ error,
2170
+ helperText,
2171
+ ...rest
2172
+ } = _ref;
2173
+ const questionSlug = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.toSlug)(question.name);
2174
+ const questionLabel = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getLabel)(question);
2175
+ const isRequired = question.mandatory;
2176
+ const questionMaxValues = question.max_selected_values;
2177
+ const questionOptions = question.values?.map(val => ({
2178
+ label: val.label,
2179
+ value: val.id.toString()
2180
+ })) || [];
2181
+ const handleCheckboxListChange = (checked, val) => {
2182
+ const currentAns = value || [];
2183
+ const maxSelectionReached = currentAns.length === questionMaxValues;
2184
+ let newValue;
2185
+ if (checked) {
2186
+ newValue = maxSelectionReached ? currentAns : [...currentAns, val];
2187
+ } else {
2188
+ newValue = currentAns.filter(v => v !== val);
2189
+ }
2190
+ setFieldValue(questionSlug, newValue);
2191
+ };
2192
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", {
2193
+ id: `${questionSlug}_container`,
2194
+ className: questionClassName,
2195
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControl, {
2196
+ disabled: isDisabled,
2197
+ required: isRequired,
2198
+ fullWidth: true,
2199
+ error: error,
2200
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormLabel, {
2201
+ children: questionLabel
2202
+ }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormHelperText, {
2203
+ children: helperText ?? " "
2204
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormGroup, {
2205
+ children: questionOptions.map(op => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControlLabel, {
2206
+ name: questionSlug,
2207
+ control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Checkbox, {
2208
+ checked: value?.includes(op.value),
2209
+ onChange: ev => handleCheckboxListChange(ev.target.checked, op.value)
2210
+ /* eslint-disable-next-line react/jsx-props-no-spreading */,
2211
+ ...rest
2212
+ }),
2213
+ label: op.label
2214
+ }, op.label))
2215
+ }), children]
2216
+ })
2217
+ }, questionSlug);
2095
2218
  };
2096
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WidgetReducer);
2219
+ CheckboxListQuestionField.propTypes = {
2220
+ question: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
2221
+ value: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array),
2222
+ questionClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2223
+ isDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2224
+ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func).isRequired,
2225
+ children: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().node),
2226
+ setFieldValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
2227
+ error: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2228
+ helperText: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
2229
+ };
2230
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CheckboxListQuestionField);
2097
2231
 
2098
2232
  /***/ }),
2099
2233
 
2100
- /***/ "./src/store.js":
2101
- /*!**********************!*\
2102
- !*** ./src/store.js ***!
2103
- \**********************/
2234
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/CheckboxQuestionField.js":
2235
+ /*!*********************************************************************************************************!*\
2236
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/components/CheckboxQuestionField.js ***!
2237
+ \*********************************************************************************************************/
2104
2238
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2105
2239
 
2106
2240
  __webpack_require__.r(__webpack_exports__);
2107
2241
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2108
- /* harmony export */ getStore: () => (/* binding */ getStore),
2109
- /* harmony export */ useInitStore: () => (/* binding */ useInitStore)
2242
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2110
2243
  /* harmony export */ });
2111
2244
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2112
2245
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2113
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ "@reduxjs/toolkit");
2114
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__);
2246
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2247
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2248
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2249
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
2250
+ /* harmony import */ var openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! openstack-uicore-foundation/lib/components/raw-html */ "openstack-uicore-foundation/lib/components/raw-html");
2251
+ /* harmony import */ var openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3__);
2252
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js");
2253
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2254
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+ const CheckboxQuestionField = _ref => {
2262
+ let {
2263
+ question,
2264
+ questionClassName = "",
2265
+ isDisabled = false,
2266
+ children,
2267
+ value,
2268
+ error,
2269
+ helperText,
2270
+ setFieldValue,
2271
+ ...rest
2272
+ } = _ref;
2273
+ const questionSlug = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.toSlug)(question.name);
2274
+ const questionLabel = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getLabel)(question);
2275
+ const isRequired = question.mandatory;
2276
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", {
2277
+ id: `${questionSlug}_container`,
2278
+ className: questionClassName,
2279
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControl, {
2280
+ fullWidth: true,
2281
+ error: error,
2282
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControlLabel, {
2283
+ control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Checkbox, {
2284
+ name: questionSlug,
2285
+ checked: !!value,
2286
+ label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default()), {
2287
+ children: questionLabel
2288
+ })
2289
+ /* eslint-disable-next-line react/jsx-props-no-spreading */,
2290
+ ...rest
2291
+ }),
2292
+ label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default()), {
2293
+ children: questionLabel
2294
+ }),
2295
+ disabled: isDisabled,
2296
+ required: isRequired
2297
+ }), children, error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormHelperText, {
2298
+ children: helperText ?? " "
2299
+ })]
2300
+ })
2301
+ }, questionSlug);
2302
+ };
2303
+ CheckboxQuestionField.propTypes = {
2304
+ question: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
2305
+ value: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2306
+ questionClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2307
+ isDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2308
+ children: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().node),
2309
+ setFieldValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
2310
+ error: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2311
+ helperText: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
2312
+ };
2313
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CheckboxQuestionField);
2314
+
2315
+ /***/ }),
2316
+
2317
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/DropdownQuestionField.js":
2318
+ /*!*********************************************************************************************************!*\
2319
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/components/DropdownQuestionField.js ***!
2320
+ \*********************************************************************************************************/
2321
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2322
+
2323
+ __webpack_require__.r(__webpack_exports__);
2324
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2325
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2326
+ /* harmony export */ });
2327
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2328
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2329
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2330
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2331
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2332
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
2333
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js");
2334
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2335
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+ const DropdownQuestionField = _ref => {
2342
+ let {
2343
+ question,
2344
+ questionClassName = "",
2345
+ isDisabled = false,
2346
+ setFieldValue,
2347
+ children,
2348
+ error,
2349
+ helperText,
2350
+ ...rest
2351
+ } = _ref;
2352
+ const questionSlug = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.toSlug)(question.name);
2353
+ const questionLabel = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getLabel)(question);
2354
+ const isRequired = question.mandatory;
2355
+ const questionOptions = question.values?.map(val => ({
2356
+ label: val.label,
2357
+ value: val.id
2358
+ })) || [];
2359
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", {
2360
+ id: `${questionSlug}_container`,
2361
+ className: questionClassName,
2362
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControl, {
2363
+ disabled: isDisabled,
2364
+ required: isRequired,
2365
+ fullWidth: true,
2366
+ error: error,
2367
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.InputLabel, {
2368
+ id: `${questionSlug}_label`,
2369
+ children: questionLabel
2370
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Select, {
2371
+ labelId: `${questionSlug}_label`,
2372
+ name: questionSlug,
2373
+ id: questionSlug,
2374
+ label: questionLabel
2375
+ /* eslint-disable-next-line react/jsx-props-no-spreading */,
2376
+ ...rest,
2377
+ style: {
2378
+ marginBottom: 20
2379
+ },
2380
+ children: questionOptions.map(op => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.MenuItem, {
2381
+ value: op.value,
2382
+ children: op.label
2383
+ }, op.label))
2384
+ }), children]
2385
+ })
2386
+ }, questionSlug);
2387
+ };
2388
+ DropdownQuestionField.propTypes = {
2389
+ question: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
2390
+ questionClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2391
+ isDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2392
+ children: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().node),
2393
+ error: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2394
+ helperText: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2395
+ setFieldValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
2396
+ };
2397
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownQuestionField);
2398
+
2399
+ /***/ }),
2400
+
2401
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/RadioListQuestionField.js":
2402
+ /*!**********************************************************************************************************!*\
2403
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/components/RadioListQuestionField.js ***!
2404
+ \**********************************************************************************************************/
2405
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2406
+
2407
+ __webpack_require__.r(__webpack_exports__);
2408
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2409
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2410
+ /* harmony export */ });
2411
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2412
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2413
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2414
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2415
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2416
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
2417
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js");
2418
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2419
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+ const RadioListQuestionField = _ref => {
2426
+ let {
2427
+ question,
2428
+ questionClassName = "",
2429
+ isDisabled = false,
2430
+ children,
2431
+ error,
2432
+ helperText,
2433
+ setFieldValue,
2434
+ ...rest
2435
+ } = _ref;
2436
+ const questionSlug = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.toSlug)(question.name);
2437
+ const questionLabel = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getLabel)(question);
2438
+ const isRequired = question.mandatory;
2439
+ const questionOptions = question.values?.map(val => ({
2440
+ label: val.label,
2441
+ value: val.id.toString()
2442
+ })) || [];
2443
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", {
2444
+ id: `${questionSlug}_container`,
2445
+ className: questionClassName,
2446
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControl, {
2447
+ disabled: isDisabled,
2448
+ required: isRequired,
2449
+ fullWidth: true,
2450
+ error: error,
2451
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormLabel, {
2452
+ id: `${questionSlug}_label`,
2453
+ children: questionLabel
2454
+ }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormHelperText, {
2455
+ children: helperText ?? " "
2456
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.RadioGroup, {
2457
+ "aria-labelledby": `${questionSlug}_label`,
2458
+ name: questionSlug
2459
+ /* eslint-disable-next-line react/jsx-props-no-spreading */,
2460
+ ...rest,
2461
+ children: questionOptions.map(op => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControlLabel, {
2462
+ value: op.value,
2463
+ control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Radio, {}),
2464
+ label: op.label
2465
+ }, op.label))
2466
+ }), children]
2467
+ })
2468
+ }, questionSlug);
2469
+ };
2470
+ RadioListQuestionField.propTypes = {
2471
+ question: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
2472
+ questionClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2473
+ isDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2474
+ children: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().node),
2475
+ error: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2476
+ helperText: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2477
+ setFieldValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
2478
+ };
2479
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RadioListQuestionField);
2480
+
2481
+ /***/ }),
2482
+
2483
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/TextQuestionField.js":
2484
+ /*!*****************************************************************************************************!*\
2485
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/components/TextQuestionField.js ***!
2486
+ \*****************************************************************************************************/
2487
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2488
+
2489
+ __webpack_require__.r(__webpack_exports__);
2490
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2491
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2492
+ /* harmony export */ });
2493
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2494
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2495
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2496
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2497
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2498
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
2499
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js");
2500
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2501
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
2502
+
2503
+
2504
+
2505
+
2506
+
2507
+ const TextQuestionField = _ref => {
2508
+ let {
2509
+ question,
2510
+ questionClassName = "",
2511
+ isDisabled = false,
2512
+ children,
2513
+ setFieldValue,
2514
+ ...rest
2515
+ } = _ref;
2516
+ const questionSlug = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.toSlug)(question.name);
2517
+ const questionLabel = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getLabel)(question);
2518
+ const isRequired = question.mandatory;
2519
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", {
2520
+ id: `${questionSlug}_container`,
2521
+ className: questionClassName,
2522
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormGroup, {
2523
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.TextField, {
2524
+ name: questionSlug,
2525
+ label: questionLabel,
2526
+ disabled: isDisabled,
2527
+ required: isRequired,
2528
+ fullWidth: true
2529
+ /* eslint-disable-next-line react/jsx-props-no-spreading */,
2530
+ ...rest
2531
+ }), children]
2532
+ })
2533
+ }, questionSlug);
2534
+ };
2535
+ TextQuestionField.propTypes = {
2536
+ question: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
2537
+ questionClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2538
+ isDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2539
+ children: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().node),
2540
+ setFieldValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
2541
+ };
2542
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TextQuestionField);
2543
+
2544
+ /***/ }),
2545
+
2546
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js":
2547
+ /*!*****************************************************************************************!*\
2548
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js ***!
2549
+ \*****************************************************************************************/
2550
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2551
+
2552
+ __webpack_require__.r(__webpack_exports__);
2553
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2554
+ /* harmony export */ checkIfValueMatch: () => (/* binding */ checkIfValueMatch),
2555
+ /* harmony export */ checkRule: () => (/* binding */ checkRule),
2556
+ /* harmony export */ checkVisibility: () => (/* binding */ checkVisibility),
2557
+ /* harmony export */ getLabel: () => (/* binding */ getLabel),
2558
+ /* harmony export */ getTypeInitialValue: () => (/* binding */ getTypeInitialValue),
2559
+ /* harmony export */ getTypeValue: () => (/* binding */ getTypeValue),
2560
+ /* harmony export */ isAnswered: () => (/* binding */ isAnswered),
2561
+ /* harmony export */ toSlug: () => (/* binding */ toSlug)
2562
+ /* harmony export */ });
2563
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "./src/components/TicketDetail/components/ExtraQuestionsFields/constants.js");
2564
+
2565
+ const checkRule = (value, rule) => {
2566
+ const values = rule.answer_values;
2567
+ if (!value) return false;
2568
+ if (Array.isArray(value)) {
2569
+ if (!value.length) return false;
2570
+ let res = rule.answer_values_operator === "And";
2571
+ values.forEach(v => {
2572
+ if (rule.answer_values_operator === "And") {
2573
+ res = res && value.includes(v);
2574
+ } else {
2575
+ // Or
2576
+ res = res || value.includes(v);
2577
+ }
2578
+ });
2579
+ return res;
2580
+ }
2581
+ return values.includes(value?.toString());
2582
+ };
2583
+ const checkVisibility = (rule, ruleResult, children) => {
2584
+ if (rule.visibility === "Visible") {
2585
+ if (rule.visibility_condition === "Equal") {
2586
+ if (ruleResult) return children;
2587
+ return null;
2588
+ }
2589
+ // Non Equal
2590
+ if (!ruleResult) {
2591
+ return children;
2592
+ }
2593
+ return null;
2594
+ }
2595
+ // not visible
2596
+ if (rule.visibility_condition === "Equal") {
2597
+ if (!ruleResult) return children;
2598
+ return null;
2599
+ }
2600
+ if (ruleResult) return children;
2601
+ return null;
2602
+ };
2603
+ const toSlug = text => {
2604
+ const textLC = text.toLowerCase();
2605
+ return textLC.replace(/[^a-zA-Z0-9]+/g, "_");
2606
+ };
2607
+ const getLabel = q =>
2608
+ // replace line breaks and remove outer <p>
2609
+ q?.label?.replace(/\n/g, " ").replace(/<p>(.*)<\/p>/gi, "$1");
2610
+ const isAnswered = answer => {
2611
+ if (!answer) return false;
2612
+ // check type
2613
+ if (Array.isArray(answer)) return answer.length > 0;
2614
+ if (typeof answer === "string") return answer.length > 0;
2615
+ if (typeof answer === "number") return answer > 0;
2616
+ if (typeof answer === "boolean") return answer;
2617
+ return false;
2618
+ };
2619
+ const checkIfValueMatch = (answer, compareVal) => {
2620
+ const answerArray = Array.isArray(answer) ? answer : [answer];
2621
+ return answerArray.some(v => {
2622
+ if (Array.isArray(compareVal)) {
2623
+ return compareVal.includes(v);
2624
+ }
2625
+ return v === compareVal;
2626
+ });
2627
+ };
2628
+ const getTypeInitialValue = q => {
2629
+ switch (q.type) {
2630
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_Checkbox:
2631
+ return false;
2632
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_RadioButtonList:
2633
+ return null;
2634
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_CheckBoxList:
2635
+ return [];
2636
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_CountryComboBox:
2637
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_ComboBox:
2638
+ return "";
2639
+ default:
2640
+ return "";
2641
+ }
2642
+ };
2643
+ const getTypeValue = (ans, type) => {
2644
+ switch (type) {
2645
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_Checkbox:
2646
+ return ans === "true";
2647
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_CheckBoxList:
2648
+ return ans?.split(",") || [];
2649
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_CountryComboBox:
2650
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_ComboBox:
2651
+ return ans || "";
2652
+ case _constants__WEBPACK_IMPORTED_MODULE_0__.QuestionType_RadioButtonList:
2653
+ return ans || null;
2654
+ default:
2655
+ return ans;
2656
+ }
2657
+ };
2658
+
2659
+ /***/ }),
2660
+
2661
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/constants.js":
2662
+ /*!**********************************************************************************!*\
2663
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/constants.js ***!
2664
+ \**********************************************************************************/
2665
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2666
+
2667
+ __webpack_require__.r(__webpack_exports__);
2668
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2669
+ /* harmony export */ QuestionType_CheckBoxList: () => (/* binding */ QuestionType_CheckBoxList),
2670
+ /* harmony export */ QuestionType_Checkbox: () => (/* binding */ QuestionType_Checkbox),
2671
+ /* harmony export */ QuestionType_ComboBox: () => (/* binding */ QuestionType_ComboBox),
2672
+ /* harmony export */ QuestionType_CountryComboBox: () => (/* binding */ QuestionType_CountryComboBox),
2673
+ /* harmony export */ QuestionType_RadioButton: () => (/* binding */ QuestionType_RadioButton),
2674
+ /* harmony export */ QuestionType_RadioButtonList: () => (/* binding */ QuestionType_RadioButtonList),
2675
+ /* harmony export */ QuestionType_Text: () => (/* binding */ QuestionType_Text),
2676
+ /* harmony export */ QuestionType_TextArea: () => (/* binding */ QuestionType_TextArea)
2677
+ /* harmony export */ });
2678
+ const QuestionType_Text = "Text";
2679
+ const QuestionType_TextArea = "TextArea";
2680
+ const QuestionType_Checkbox = "CheckBox";
2681
+ const QuestionType_RadioButtonList = "RadioButtonList";
2682
+ const QuestionType_ComboBox = "ComboBox";
2683
+ const QuestionType_CheckBoxList = "CheckBoxList";
2684
+ const QuestionType_CountryComboBox = "CountryComboBox";
2685
+ const QuestionType_RadioButton = "RadioButton";
2686
+
2687
+ /***/ }),
2688
+
2689
+ /***/ "./src/components/TicketDetail/components/ExtraQuestionsFields/index.js":
2690
+ /*!******************************************************************************!*\
2691
+ !*** ./src/components/TicketDetail/components/ExtraQuestionsFields/index.js ***!
2692
+ \******************************************************************************/
2693
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2694
+
2695
+ __webpack_require__.r(__webpack_exports__);
2696
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2697
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2698
+ /* harmony export */ });
2699
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2700
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2701
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2702
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2703
+ /* harmony import */ var _components_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/utils */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js");
2704
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./src/components/TicketDetail/components/ExtraQuestionsFields/constants.js");
2705
+ /* harmony import */ var _components_TextQuestionField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/TextQuestionField */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/TextQuestionField.js");
2706
+ /* harmony import */ var _components_CheckboxQuestionField__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/CheckboxQuestionField */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/CheckboxQuestionField.js");
2707
+ /* harmony import */ var _components_RadioListQuestionField__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/RadioListQuestionField */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/RadioListQuestionField.js");
2708
+ /* harmony import */ var _components_CheckboxListQuestionField__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/CheckboxListQuestionField */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/CheckboxListQuestionField.js");
2709
+ /* harmony import */ var _components_DropdownQuestionField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/DropdownQuestionField */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/DropdownQuestionField.js");
2710
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2711
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
2712
+ /**
2713
+ * Copyright 2017 OpenStack Foundation
2714
+ * Licensed under the Apache License, Version 2.0 (the "License");
2715
+ * you may not use this file except in compliance with the License.
2716
+ * You may obtain a copy of the License at
2717
+ * http://www.apache.org/licenses/LICENSE-2.0
2718
+ * Unless required by applicable law or agreed to in writing, software
2719
+ * distributed under the License is distributed on an "AS IS" BASIS,
2720
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2721
+ * See the License for the specific language governing permissions and
2722
+ * limitations under the License.
2723
+ * */
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+
2734
+
2735
+ const getQuestionFieldComponent = questionType => {
2736
+ switch (questionType) {
2737
+ case _constants__WEBPACK_IMPORTED_MODULE_3__.QuestionType_TextArea:
2738
+ case _constants__WEBPACK_IMPORTED_MODULE_3__.QuestionType_Text:
2739
+ {
2740
+ return _components_TextQuestionField__WEBPACK_IMPORTED_MODULE_4__["default"];
2741
+ }
2742
+ case _constants__WEBPACK_IMPORTED_MODULE_3__.QuestionType_Checkbox:
2743
+ {
2744
+ return _components_CheckboxQuestionField__WEBPACK_IMPORTED_MODULE_5__["default"];
2745
+ }
2746
+ case _constants__WEBPACK_IMPORTED_MODULE_3__.QuestionType_RadioButtonList:
2747
+ {
2748
+ return _components_RadioListQuestionField__WEBPACK_IMPORTED_MODULE_6__["default"];
2749
+ }
2750
+ case _constants__WEBPACK_IMPORTED_MODULE_3__.QuestionType_CheckBoxList:
2751
+ {
2752
+ return _components_CheckboxListQuestionField__WEBPACK_IMPORTED_MODULE_7__["default"];
2753
+ }
2754
+ case _constants__WEBPACK_IMPORTED_MODULE_3__.QuestionType_CountryComboBox:
2755
+ case _constants__WEBPACK_IMPORTED_MODULE_3__.QuestionType_ComboBox:
2756
+ {
2757
+ return _components_DropdownQuestionField__WEBPACK_IMPORTED_MODULE_8__["default"];
2758
+ }
2759
+ default:
2760
+ {
2761
+ return (react__WEBPACK_IMPORTED_MODULE_0___default().Fragment);
2762
+ }
2763
+ }
2764
+ };
2765
+ const ExtraQuestionsFields = _ref => {
2766
+ let {
2767
+ extraQuestions,
2768
+ className = "extraQuestions",
2769
+ questionClassName = "extraQuestion",
2770
+ readOnly = false,
2771
+ allowEdit = true,
2772
+ formik
2773
+ } = _ref;
2774
+ const renderRule = (rule, questionSlug) => (0,_components_utils__WEBPACK_IMPORTED_MODULE_2__.checkVisibility)(rule, (0,_components_utils__WEBPACK_IMPORTED_MODULE_2__.checkRule)(formik.values[questionSlug], rule),
2775
+ // eslint-disable-next-line no-use-before-define
2776
+ renderQuestion(rule.sub_question));
2777
+ const renderQuestion = q => {
2778
+ const questionSlug = (0,_components_utils__WEBPACK_IMPORTED_MODULE_2__.toSlug)(q.name);
2779
+ // disable field if edit isn't allowed and the questions is answered
2780
+ const isDisabled = !allowEdit && (0,_components_utils__WEBPACK_IMPORTED_MODULE_2__.isAnswered)(formik.values[questionSlug]) || readOnly;
2781
+ const QuestionFieldComponent = getQuestionFieldComponent(q.type);
2782
+ const formikProps = {
2783
+ value: formik.values[questionSlug],
2784
+ onChange: formik.handleChange,
2785
+ onBlur: formik.handleBlur,
2786
+ error: formik.touched[questionSlug] && Boolean(formik.errors[questionSlug]),
2787
+ helperText: formik.touched[questionSlug] && formik.errors[questionSlug],
2788
+ setFieldValue: formik.setFieldValue
2789
+ };
2790
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(QuestionFieldComponent, {
2791
+ question: q,
2792
+ questionClassName: questionClassName,
2793
+ isDisabled: isDisabled
2794
+ /* eslint-disable-next-line react/jsx-props-no-spreading */,
2795
+ ...formikProps,
2796
+ children: q.sub_question_rules?.map(rule => renderRule(rule, questionSlug))
2797
+ }, questionSlug);
2798
+ };
2799
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div", {
2800
+ className: className,
2801
+ children: extraQuestions.map(renderQuestion)
2802
+ });
2803
+ };
2804
+ ExtraQuestionsFields.propTypes = {
2805
+ extraQuestions: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array).isRequired,
2806
+ className: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2807
+ questionClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
2808
+ allowEdit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2809
+ readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
2810
+ };
2811
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExtraQuestionsFields);
2812
+
2813
+ /***/ }),
2814
+
2815
+ /***/ "./src/components/TicketDetail/components/RegistrationDisclaimer/RegistrationDisclaimer.js":
2816
+ /*!*************************************************************************************************!*\
2817
+ !*** ./src/components/TicketDetail/components/RegistrationDisclaimer/RegistrationDisclaimer.js ***!
2818
+ \*************************************************************************************************/
2819
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2820
+
2821
+ __webpack_require__.r(__webpack_exports__);
2822
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2823
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2824
+ /* harmony export */ });
2825
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2826
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2827
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2828
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2829
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2830
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
2831
+ /* harmony import */ var openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! openstack-uicore-foundation/lib/components/raw-html */ "openstack-uicore-foundation/lib/components/raw-html");
2832
+ /* harmony import */ var openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3__);
2833
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../constants */ "./src/components/TicketDetail/constants.js");
2834
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketDetail/components/RegistrationDisclaimer/styles.module.scss");
2835
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2836
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
2837
+
2838
+
2839
+
2840
+
2841
+
2842
+
2843
+
2844
+ const RegistrationDisclaimer = _ref => {
2845
+ let {
2846
+ disclaimer,
2847
+ formik,
2848
+ isDisabled = false,
2849
+ isRequired = true
2850
+ } = _ref;
2851
+ const name = _constants__WEBPACK_IMPORTED_MODULE_4__.TICKET_ATTENDEE_KEYS.disclaimerAccepted;
2852
+ const {
2853
+ errors,
2854
+ values,
2855
+ touched,
2856
+ handleChange,
2857
+ handleBlur
2858
+ } = formik;
2859
+ const value = values[name];
2860
+ const error = touched[name] && Boolean(errors[name]);
2861
+ const helperText = touched[name] && errors[name];
2862
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
2863
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.wrapper,
2864
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControl, {
2865
+ fullWidth: true,
2866
+ error: error,
2867
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormControlLabel, {
2868
+ control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Checkbox, {
2869
+ name: name,
2870
+ checked: !!value,
2871
+ label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default()), {
2872
+ children: disclaimer
2873
+ }),
2874
+ onChange: handleChange,
2875
+ onBlur: handleBlur
2876
+ }),
2877
+ label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_3___default()), {
2878
+ children: disclaimer
2879
+ }),
2880
+ disabled: isDisabled,
2881
+ required: isRequired
2882
+ }), error && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.FormHelperText, {
2883
+ children: helperText ?? " "
2884
+ })]
2885
+ })
2886
+ });
2887
+ };
2888
+ RegistrationDisclaimer.propTypes = {
2889
+ disclaimer: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string).isRequired,
2890
+ formik: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
2891
+ isDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
2892
+ isRequired: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
2893
+ };
2894
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RegistrationDisclaimer);
2895
+
2896
+ /***/ }),
2897
+
2898
+ /***/ "./src/components/TicketDetail/components/TicketDelegationFields/index.js":
2899
+ /*!********************************************************************************!*\
2900
+ !*** ./src/components/TicketDetail/components/TicketDelegationFields/index.js ***!
2901
+ \********************************************************************************/
2902
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2903
+
2904
+ __webpack_require__.r(__webpack_exports__);
2905
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2906
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2907
+ /* harmony export */ });
2908
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2909
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2910
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2911
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2912
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2913
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
2914
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
2915
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
2916
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2917
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
2918
+ /**
2919
+ * Copyright 2017 OpenStack Foundation
2920
+ * Licensed under the Apache License, Version 2.0 (the "License");
2921
+ * you may not use this file except in compliance with the License.
2922
+ * You may obtain a copy of the License at
2923
+ * http://www.apache.org/licenses/LICENSE-2.0
2924
+ * Unless required by applicable law or agreed to in writing, software
2925
+ * distributed under the License is distributed on an "AS IS" BASIS,
2926
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2927
+ * See the License for the specific language governing permissions and
2928
+ * limitations under the License.
2929
+ * */
2930
+
2931
+
2932
+
2933
+
2934
+
2935
+
2936
+ const TicketDelegationFields = _ref => {
2937
+ let {
2938
+ formik
2939
+ } = _ref;
2940
+ const {
2941
+ t
2942
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
2943
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {
2944
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.TextField, {
2945
+ fullWidth: true,
2946
+ id: "delegated_first_name",
2947
+ label: t("ticket_detail.first_name"),
2948
+ value: formik.values.delegated_first_name,
2949
+ onChange: formik.handleChange,
2950
+ onBlur: formik.handleBlur,
2951
+ error: formik.touched.delegated_first_name && Boolean(formik.errors.delegated_first_name),
2952
+ helperText: formik.touched.delegated_first_name && formik.errors.delegated_first_name
2953
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.TextField, {
2954
+ fullWidth: true,
2955
+ id: "delegated_last_name",
2956
+ label: t("ticket_detail.last_name"),
2957
+ value: formik.values.delegated_last_name,
2958
+ onChange: formik.handleChange,
2959
+ onBlur: formik.handleBlur,
2960
+ error: formik.touched.delegated_last_name && Boolean(formik.errors.delegated_last_name),
2961
+ helperText: formik.touched.delegated_last_name && formik.errors.delegated_last_name
2962
+ })]
2963
+ });
2964
+ };
2965
+ TicketDelegationFields.propTypes = {
2966
+ formik: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired
2967
+ };
2968
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketDelegationFields);
2969
+
2970
+ /***/ }),
2971
+
2972
+ /***/ "./src/components/TicketDetail/components/TicketForm/index.js":
2973
+ /*!********************************************************************!*\
2974
+ !*** ./src/components/TicketDetail/components/TicketForm/index.js ***!
2975
+ \********************************************************************/
2976
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2977
+
2978
+ __webpack_require__.r(__webpack_exports__);
2979
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2980
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2981
+ /* harmony export */ });
2982
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2983
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2984
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2985
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2986
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
2987
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
2988
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2989
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
2990
+ /* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! formik */ "formik");
2991
+ /* harmony import */ var formik__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(formik__WEBPACK_IMPORTED_MODULE_4__);
2992
+ /* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! yup */ "yup");
2993
+ /* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(yup__WEBPACK_IMPORTED_MODULE_5__);
2994
+ /* harmony import */ var _ExtraQuestionsFields__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ExtraQuestionsFields */ "./src/components/TicketDetail/components/ExtraQuestionsFields/index.js");
2995
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../styles.module.scss */ "./src/components/TicketDetail/styles.module.scss");
2996
+ /* harmony import */ var _ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ExtraQuestionsFields/components/utils */ "./src/components/TicketDetail/components/ExtraQuestionsFields/components/utils.js");
2997
+ /* harmony import */ var _ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ExtraQuestionsFields/constants */ "./src/components/TicketDetail/components/ExtraQuestionsFields/constants.js");
2998
+ /* harmony import */ var _TicketDelegationFields__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../TicketDelegationFields */ "./src/components/TicketDetail/components/TicketDelegationFields/index.js");
2999
+ /* harmony import */ var _TicketOwnerFields__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../TicketOwnerFields */ "./src/components/TicketDetail/components/TicketOwnerFields/index.js");
3000
+ /* harmony import */ var _RegistrationDisclaimer_RegistrationDisclaimer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../RegistrationDisclaimer/RegistrationDisclaimer */ "./src/components/TicketDetail/components/RegistrationDisclaimer/RegistrationDisclaimer.js");
3001
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../constants */ "./src/components/TicketDetail/constants.js");
3002
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3003
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__);
3004
+ /**
3005
+ * Copyright 2017 OpenStack Foundation
3006
+ * Licensed under the Apache License, Version 2.0 (the "License");
3007
+ * you may not use this file except in compliance with the License.
3008
+ * You may obtain a copy of the License at
3009
+ * http://www.apache.org/licenses/LICENSE-2.0
3010
+ * Unless required by applicable law or agreed to in writing, software
3011
+ * distributed under the License is distributed on an "AS IS" BASIS,
3012
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3013
+ * See the License for the specific language governing permissions and
3014
+ * limitations under the License.
3015
+ * */
3016
+
3017
+
3018
+
3019
+
3020
+
3021
+
3022
+
3023
+
3024
+
3025
+
3026
+
3027
+
3028
+
3029
+
3030
+
3031
+
3032
+ const getTypeValidation = (type, name, isRequired) => {
3033
+ let schema;
3034
+ switch (type) {
3035
+ case _ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_9__.QuestionType_Checkbox:
3036
+ schema = yup__WEBPACK_IMPORTED_MODULE_5__.bool().oneOf([true], "Field must be checked");
3037
+ break;
3038
+ case _ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_9__.QuestionType_RadioButtonList:
3039
+ schema = yup__WEBPACK_IMPORTED_MODULE_5__.string(`Enter ${name}`);
3040
+ break;
3041
+ case _ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_9__.QuestionType_CheckBoxList:
3042
+ schema = yup__WEBPACK_IMPORTED_MODULE_5__.array().of(yup__WEBPACK_IMPORTED_MODULE_5__.string());
3043
+ break;
3044
+ case _ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_9__.QuestionType_CountryComboBox:
3045
+ case _ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_9__.QuestionType_ComboBox:
3046
+ schema = yup__WEBPACK_IMPORTED_MODULE_5__.string(`Enter ${name}`);
3047
+ break;
3048
+ default:
3049
+ schema = yup__WEBPACK_IMPORTED_MODULE_5__.string(`Enter ${name}`);
3050
+ break;
3051
+ }
3052
+ if (isRequired) {
3053
+ schema = schema.required(`${name} is required`);
3054
+ }
3055
+ return schema;
3056
+ };
3057
+ const buildValidationSchema = (extraQuestions, allowsDelegation, disclaimerMandatory) => {
3058
+ const schema = {
3059
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.email]: yup__WEBPACK_IMPORTED_MODULE_5__.string("Enter email").email("Email invalid").required("Email is required"),
3060
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.firstName]: yup__WEBPACK_IMPORTED_MODULE_5__.string("Enter first name").required("First name is required"),
3061
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.lastName]: yup__WEBPACK_IMPORTED_MODULE_5__.string("Enter last name").required("Last name is required"),
3062
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.company]: yup__WEBPACK_IMPORTED_MODULE_5__.string("Enter company").required("Company is required")
3063
+ };
3064
+ if (disclaimerMandatory) {
3065
+ schema[_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.disclaimerAccepted] = yup__WEBPACK_IMPORTED_MODULE_5__.bool().oneOf([true], "Field must be checked");
3066
+ }
3067
+ if (allowsDelegation) {
3068
+ schema.delegated_first_name = yup__WEBPACK_IMPORTED_MODULE_5__.string("Enter first name").required("First name is required");
3069
+ schema.delegated_last_name = yup__WEBPACK_IMPORTED_MODULE_5__.string("Enter last name").required("Last name is required");
3070
+ }
3071
+ extraQuestions.forEach(q => {
3072
+ const questionSlug = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.toSlug)(q.name);
3073
+ schema[questionSlug] = getTypeValidation(q.type, q.name, q.mandatory);
3074
+ if (q.sub_question_rules?.length > 0) {
3075
+ q.sub_question_rules.forEach(rule => {
3076
+ const subQuestion = rule.sub_question;
3077
+ const subQuestionSlug = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.toSlug)(subQuestion.name);
3078
+ schema[subQuestionSlug] = getTypeValidation(subQuestion.type, subQuestion.name, false).nullable().when(questionSlug, {
3079
+ is: questionAns => {
3080
+ const match = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.checkIfValueMatch)(questionAns, rule.answer_values);
3081
+ return match;
3082
+ },
3083
+ then: sch => sch.required("This question is required")
3084
+ });
3085
+ });
3086
+ }
3087
+ });
3088
+ return yup__WEBPACK_IMPORTED_MODULE_5__.object(schema);
3089
+ };
3090
+
3091
+ // on formik we need to initialize all subquestions with a value
3092
+ // on submit, we only need relevant answers
3093
+ const parseAnswers = function (owner, extraQuestions, answers, allowsDelegation, manager) {
3094
+ let onlyRelevant = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
3095
+ const initialValues = {
3096
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.email]: owner.email,
3097
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.firstName]: owner.first_name,
3098
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.lastName]: owner.last_name,
3099
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.company]: owner.company,
3100
+ [_constants__WEBPACK_IMPORTED_MODULE_13__.TICKET_ATTENDEE_KEYS.disclaimerAccepted]: owner.disclaimer_accepted
3101
+ };
3102
+ if (allowsDelegation) {
3103
+ initialValues.delegated_first_name = manager?.first_name || "";
3104
+ initialValues.delegated_last_name = manager?.last_name || "";
3105
+ }
3106
+ extraQuestions.forEach(q => {
3107
+ const questionSlug = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.toSlug)(q.name);
3108
+ const answer = answers[questionSlug];
3109
+ initialValues[questionSlug] = answer || (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.getTypeInitialValue)(q);
3110
+ if (q.sub_question_rules?.length > 0) {
3111
+ q.sub_question_rules.forEach(rule => {
3112
+ const subQuestionSlug = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.toSlug)(rule.sub_question.name);
3113
+ const subAnswer = answers[subQuestionSlug];
3114
+ const match = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.checkIfValueMatch)(answer, rule.answer_values);
3115
+ if (!onlyRelevant || match) {
3116
+ initialValues[subQuestionSlug] = subAnswer || (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.getTypeInitialValue)(rule.sub_question);
3117
+ }
3118
+ });
3119
+ }
3120
+ });
3121
+ return initialValues;
3122
+ };
3123
+ const useScrollToError = formik => {
3124
+ const {
3125
+ errors,
3126
+ isValid,
3127
+ submitCount
3128
+ } = formik;
3129
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
3130
+ const errorArray = Object.keys(errors);
3131
+ if (isValid || errorArray.length === 0) return;
3132
+ const element = document.querySelector(`input[name='${errorArray[0]}']`);
3133
+ if (!element) return;
3134
+ // Scroll to first known error into view
3135
+ element.scrollIntoView({
3136
+ behavior: "smooth",
3137
+ block: "center"
3138
+ });
3139
+ }, [submitCount]);
3140
+ };
3141
+ const TicketForm = _ref => {
3142
+ let {
3143
+ ticket,
3144
+ extraQuestions,
3145
+ summit,
3146
+ canEdit,
3147
+ onSubmit,
3148
+ onClose
3149
+ } = _ref;
3150
+ const {
3151
+ t
3152
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
3153
+ const ticketManager = ticket?.manager;
3154
+ /* DISABLE DELEGATION FTM */
3155
+ const allowsDelegation = ticket?.ticket_type?.allows_to_delegate && false;
3156
+ const answers = ticket?.owner?.extra_questions.reduce((res, ans) => {
3157
+ const questionSlug = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.toSlug)(ans.question.name);
3158
+ res[questionSlug] = (0,_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_8__.getTypeValue)(ans.value, ans.question.type);
3159
+ return res;
3160
+ }, {});
3161
+ const formik = (0,formik__WEBPACK_IMPORTED_MODULE_4__.useFormik)({
3162
+ initialValues: parseAnswers(ticket.owner, extraQuestions, answers, ticketManager, allowsDelegation),
3163
+ validationSchema: buildValidationSchema(extraQuestions, allowsDelegation, summit.registration_disclaimer_mandatory),
3164
+ onSubmit: values => {
3165
+ const relevantAnswers = parseAnswers(extraQuestions, values, ticketManager, allowsDelegation, true);
3166
+ onSubmit(relevantAnswers);
3167
+ },
3168
+ enableReinitialize: true
3169
+ });
3170
+
3171
+ // console.log("SUMMIT: ", summit);
3172
+ // console.log("TICKET: ", ticket);
3173
+ // console.log("QUESTIUONs: ", extraQuestions);
3174
+ // console.log("ANSWERS: ", answers);
3175
+ // console.log("ERRORs: ", formik.errors);
3176
+ // console.log("VALUES: ", formik.values);
3177
+ // console.log("INITIAL: ", formik.initialValues);
3178
+ // console.log("TOUCHED: ", formik.touched);
3179
+
3180
+ // SCROLL TO ERROR
3181
+ useScrollToError(formik);
3182
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)("form", {
3183
+ onSubmit: formik.handleSubmit,
3184
+ noValidate: true,
3185
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_TicketOwnerFields__WEBPACK_IMPORTED_MODULE_11__["default"], {
3186
+ formik: formik,
3187
+ owner: ticket.owner,
3188
+ summitId: summit.id,
3189
+ disabled: !canEdit
3190
+ }), allowsDelegation && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
3191
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Typography, {
3192
+ variant: "subtitle2",
3193
+ gutterBottom: true,
3194
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.delegatedTo,
3195
+ children: t("ticket_detail.delegated_to")
3196
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_TicketDelegationFields__WEBPACK_IMPORTED_MODULE_10__["default"], {
3197
+ formik: formik
3198
+ })]
3199
+ }), extraQuestions?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
3200
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("h6", {
3201
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.additionalDetails,
3202
+ children: t("ticket_detail.aditional_details")
3203
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_ExtraQuestionsFields__WEBPACK_IMPORTED_MODULE_6__["default"], {
3204
+ extraQuestions: extraQuestions,
3205
+ allowEdit: canEdit,
3206
+ formik: formik
3207
+ })]
3208
+ }), summit.registration_disclaimer_content && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_RegistrationDisclaimer_RegistrationDisclaimer__WEBPACK_IMPORTED_MODULE_12__["default"], {
3209
+ formik: formik,
3210
+ disclaimer: summit.registration_disclaimer_content,
3211
+ isRequired: summit.registration_disclaimer_mandatory,
3212
+ isDisabled: !canEdit
3213
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
3214
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.footer,
3215
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3216
+ type: "submit",
3217
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.saveBtn,
3218
+ variant: "contained",
3219
+ color: "primary",
3220
+ size: "large",
3221
+ children: t("ticket_detail.save")
3222
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3223
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.cancelBtn,
3224
+ color: "primary",
3225
+ size: "large",
3226
+ onClick: onClose,
3227
+ children: t("ticket_detail.cancel")
3228
+ })]
3229
+ })]
3230
+ });
3231
+ };
3232
+ TicketForm.propTypes = {
3233
+ ticket: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
3234
+ extraQuestions: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array).isRequired,
3235
+ summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired,
3236
+ canEdit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
3237
+ onSubmit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func).isRequired,
3238
+ onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func).isRequired
3239
+ };
3240
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketForm);
3241
+
3242
+ /***/ }),
3243
+
3244
+ /***/ "./src/components/TicketDetail/components/TicketOwnerFields/index.js":
3245
+ /*!***************************************************************************!*\
3246
+ !*** ./src/components/TicketDetail/components/TicketOwnerFields/index.js ***!
3247
+ \***************************************************************************/
3248
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3249
+
3250
+ __webpack_require__.r(__webpack_exports__);
3251
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3252
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
3253
+ /* harmony export */ });
3254
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3255
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3256
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
3257
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
3258
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
3259
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
3260
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
3261
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
3262
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketDetail/components/TicketOwnerFields/styles.module.scss");
3263
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../constants */ "./src/components/TicketDetail/constants.js");
3264
+ /* harmony import */ var _CompanyField__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../CompanyField */ "./src/components/TicketDetail/components/CompanyField/index.js");
3265
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3266
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
3267
+ /**
3268
+ * Copyright 2017 OpenStack Foundation
3269
+ * Licensed under the Apache License, Version 2.0 (the "License");
3270
+ * you may not use this file except in compliance with the License.
3271
+ * You may obtain a copy of the License at
3272
+ * http://www.apache.org/licenses/LICENSE-2.0
3273
+ * Unless required by applicable law or agreed to in writing, software
3274
+ * distributed under the License is distributed on an "AS IS" BASIS,
3275
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3276
+ * See the License for the specific language governing permissions and
3277
+ * limitations under the License.
3278
+ * */
3279
+
3280
+
3281
+
3282
+
3283
+
3284
+
3285
+
3286
+
3287
+
3288
+ const TicketOwnerFields = _ref => {
3289
+ let {
3290
+ formik,
3291
+ summitId,
3292
+ disabled
3293
+ } = _ref;
3294
+ const {
3295
+ t
3296
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
3297
+ const {
3298
+ errors,
3299
+ values,
3300
+ touched,
3301
+ handleChange,
3302
+ handleBlur
3303
+ } = formik;
3304
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
3305
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.wrapper,
3306
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.TextField, {
3307
+ fullWidth: true,
3308
+ name: _constants__WEBPACK_IMPORTED_MODULE_5__.TICKET_ATTENDEE_KEYS.email,
3309
+ label: t("ticket_detail.email"),
3310
+ disabled: true,
3311
+ value: values[_constants__WEBPACK_IMPORTED_MODULE_5__.TICKET_ATTENDEE_KEYS.email]
3312
+ }), [_constants__WEBPACK_IMPORTED_MODULE_5__.TICKET_ATTENDEE_KEYS.firstName, _constants__WEBPACK_IMPORTED_MODULE_5__.TICKET_ATTENDEE_KEYS.lastName].map(name => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.TextField, {
3313
+ fullWidth: true,
3314
+ name: name,
3315
+ label: t(`ticket_detail.${name}`),
3316
+ value: values[name],
3317
+ disabled: disabled,
3318
+ onChange: handleChange,
3319
+ onBlur: handleBlur,
3320
+ error: touched[name] && Boolean(errors[name]),
3321
+ helperText: formik.touched[name] && formik.errors[name],
3322
+ required: true
3323
+ }, name)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_CompanyField__WEBPACK_IMPORTED_MODULE_6__["default"], {
3324
+ formik: formik,
3325
+ summitId: summitId,
3326
+ isRequired: true
3327
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
3328
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.infoNote,
3329
+ children: t("ticket_detail.info_note")
3330
+ })]
3331
+ });
3332
+ };
3333
+ TicketOwnerFields.propTypes = {
3334
+ formik: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object).isRequired
3335
+ };
3336
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketOwnerFields);
3337
+
3338
+ /***/ }),
3339
+
3340
+ /***/ "./src/components/TicketDetail/constants.js":
3341
+ /*!**************************************************!*\
3342
+ !*** ./src/components/TicketDetail/constants.js ***!
3343
+ \**************************************************/
3344
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3345
+
3346
+ __webpack_require__.r(__webpack_exports__);
3347
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3348
+ /* harmony export */ TICKET_ATTENDEE_KEYS: () => (/* binding */ TICKET_ATTENDEE_KEYS)
3349
+ /* harmony export */ });
3350
+ const TICKET_ATTENDEE_KEYS = {
3351
+ email: "attendee_email",
3352
+ firstName: "attendee_first_name",
3353
+ lastName: "attendee_last_name",
3354
+ company: "attendee_company",
3355
+ disclaimerAccepted: "disclaimer_accepted"
3356
+ };
3357
+
3358
+ /***/ }),
3359
+
3360
+ /***/ "./src/components/TicketDetail/index.js":
3361
+ /*!**********************************************!*\
3362
+ !*** ./src/components/TicketDetail/index.js ***!
3363
+ \**********************************************/
3364
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3365
+
3366
+ __webpack_require__.r(__webpack_exports__);
3367
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3368
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
3369
+ /* harmony export */ });
3370
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3371
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3372
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
3373
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
3374
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
3375
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
3376
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
3377
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
3378
+ /* harmony import */ var react_qr_code__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-qr-code */ "react-qr-code");
3379
+ /* harmony import */ var react_qr_code__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_qr_code__WEBPACK_IMPORTED_MODULE_4__);
3380
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ "@mui/material");
3381
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_5__);
3382
+ /* harmony import */ var _mui_icons_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/icons-material */ "@mui/icons-material");
3383
+ /* harmony import */ var _mui_icons_material__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material__WEBPACK_IMPORTED_MODULE_6__);
3384
+ /* harmony import */ var _OrdersList_OrderNumber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../OrdersList/OrderNumber */ "./src/components/OrdersList/OrderNumber.js");
3385
+ /* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
3386
+ /* harmony import */ var _components_TicketForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/TicketForm */ "./src/components/TicketDetail/components/TicketForm/index.js");
3387
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketDetail/styles.module.scss");
3388
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3389
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__);
3390
+
3391
+
3392
+
3393
+
3394
+
3395
+
3396
+
3397
+
3398
+
3399
+
3400
+
3401
+
3402
+ const TicketDetail = _ref => {
3403
+ let {
3404
+ summit,
3405
+ ticket,
3406
+ onClose
3407
+ } = _ref;
3408
+ const {
3409
+ t
3410
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
3411
+ const {
3412
+ user: {
3413
+ userProfile
3414
+ },
3415
+ extraQuestions
3416
+ } = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.widgetState);
3417
+ const isUserOrderOwner = ticket?.order.owner_id === userProfile.id;
3418
+ const isUserTicketOwner = ticket?.owner?.email === userProfile.email;
3419
+ const canEditTicketData = (isUserTicketOwner || isUserOrderOwner) && summit.allow_update_attendee_extra_questions;
3420
+ const {
3421
+ isComplete
3422
+ } = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_8__.useTicketDetails)(ticket);
3423
+ const onSave = val => {
3424
+ console.log("SAVE: ", val);
3425
+ };
3426
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Drawer, {
3427
+ open: !!ticket,
3428
+ onClose: onClose,
3429
+ anchor: "right",
3430
+ ModalProps: {
3431
+ keepMounted: false
3432
+ },
3433
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.ticketDetailContainer,
3434
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
3435
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.header,
3436
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.IconButton, {
3437
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.closeBtn,
3438
+ onClick: onClose,
3439
+ sx: {
3440
+ float: "right"
3441
+ },
3442
+ fontSize: "large",
3443
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_icons_material__WEBPACK_IMPORTED_MODULE_6__.Close, {})
3444
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Typography, {
3445
+ variant: "h4",
3446
+ gutterBottom: true,
3447
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.title,
3448
+ children: ticket?.ticket_type?.name
3449
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Typography, {
3450
+ variant: "body2",
3451
+ gutterBottom: true,
3452
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.subtitle,
3453
+ children: [t("ticket_detail.purchased_by"), " ", ticket?.owner?.email]
3454
+ }), isComplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.Fragment, {
3455
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
3456
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.qrCode,
3457
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)((react_qr_code__WEBPACK_IMPORTED_MODULE_4___default()), {
3458
+ size: 256,
3459
+ style: {
3460
+ height: "auto",
3461
+ maxWidth: "100%",
3462
+ width: "100%"
3463
+ },
3464
+ value: ticket.qr_code,
3465
+ viewBox: "0 0 256 256"
3466
+ })
3467
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)("p", {
3468
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.status,
3469
+ children: t("ticket_detail.status")
3470
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Typography, {
3471
+ variant: "body2",
3472
+ gutterBottom: true,
3473
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.qrNote,
3474
+ children: t("ticket_detail.qr_note")
3475
+ })]
3476
+ }), !summit?.is_virtual && isComplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
3477
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.actionButtonsContainer,
3478
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Button, {
3479
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.downloadBtn,
3480
+ variant: "contained",
3481
+ color: "primary",
3482
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_icons_material__WEBPACK_IMPORTED_MODULE_6__.FileDownloadOutlined, {
3483
+ fontSize: "large"
3484
+ }), t("ticket_detail.download")]
3485
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Button, {
3486
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.sendBtn,
3487
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_icons_material__WEBPACK_IMPORTED_MODULE_6__.EmailOutlined, {
3488
+ fontSize: "large"
3489
+ }), t("ticket_detail.send")]
3490
+ })]
3491
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)("div", {
3492
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.orderNumber,
3493
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_OrdersList_OrderNumber__WEBPACK_IMPORTED_MODULE_7__["default"], {
3494
+ number: ticket?.order?.number,
3495
+ copy: true,
3496
+ truncated: true,
3497
+ reversed: true,
3498
+ width: 150
3499
+ })
3500
+ })]
3501
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
3502
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.attendeeContainer,
3503
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Typography, {
3504
+ variant: "h4",
3505
+ gutterBottom: true,
3506
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.attendeeInfoTitle,
3507
+ children: t("ticket_detail.attendee_information")
3508
+ }), ticket && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_components_TicketForm__WEBPACK_IMPORTED_MODULE_9__["default"], {
3509
+ ticket: ticket,
3510
+ extraQuestions: extraQuestions,
3511
+ summit: summit,
3512
+ canEdit: canEditTicketData,
3513
+ onSubmit: onSave,
3514
+ onClose: onClose
3515
+ })]
3516
+ })]
3517
+ });
3518
+ };
3519
+ TicketDetail.propTypes = {
3520
+ summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
3521
+ ticket: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
3522
+ onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
3523
+ };
3524
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketDetail);
3525
+
3526
+ /***/ }),
3527
+
3528
+ /***/ "./src/components/TicketStatus/index.js":
3529
+ /*!**********************************************!*\
3530
+ !*** ./src/components/TicketStatus/index.js ***!
3531
+ \**********************************************/
3532
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3533
+
3534
+ __webpack_require__.r(__webpack_exports__);
3535
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3536
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
3537
+ /* harmony export */ });
3538
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3539
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3540
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
3541
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
3542
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
3543
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
3544
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
3545
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
3546
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketStatus/styles.module.scss");
3547
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3548
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
3549
+
3550
+
3551
+
3552
+
3553
+
3554
+
3555
+ function TicketStatus(_ref) {
3556
+ let {
3557
+ ticket
3558
+ } = _ref;
3559
+ const {
3560
+ t
3561
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
3562
+ const isActive = ticket.is_active;
3563
+ const refund_requests = ticket.refund_requests.find(r => r.status === "Requested");
3564
+ const ticket_status_incomplete = ticket.owner?.status === "Incomplete";
3565
+ const ticket_unassigned = ticket.owner_id === 0;
3566
+ const ticket_complete = ticket.owner && ticket.owner?.status === "Complete";
3567
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Container, {
3568
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.ticketStatusContainer,
3569
+ children: isActive ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
3570
+ children: [refund_requests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3571
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonRefundRequested}`,
3572
+ children: t("ticket_status.status_refund_requested")
3573
+ }), ticket_status_incomplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3574
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonIncomplete}`,
3575
+ children: t("ticket_status.status_incomplete")
3576
+ }), ticket_unassigned && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3577
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonUnassigned}`,
3578
+ children: t("ticket_status.status_unassigned")
3579
+ }), ticket_complete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3580
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonComplete}`,
3581
+ children: t("ticket_status.status_complete")
3582
+ })]
3583
+ }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3584
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonCancelled}`,
3585
+ children: t("ticket_status.status_cancelled")
3586
+ })
3587
+ });
3588
+ }
3589
+ TicketStatus.propTypes = {
3590
+ ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
3591
+ owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
3592
+ status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
3593
+ }),
3594
+ refund_requests: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
3595
+ })
3596
+ };
3597
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketStatus);
3598
+
3599
+ /***/ }),
3600
+
3601
+ /***/ "./src/hooks/useTicketDetails.js":
3602
+ /*!***************************************!*\
3603
+ !*** ./src/hooks/useTicketDetails.js ***!
3604
+ \***************************************/
3605
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3606
+
3607
+ __webpack_require__.r(__webpack_exports__);
3608
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3609
+ /* harmony export */ STATUS_CANCELLED: () => (/* binding */ STATUS_CANCELLED),
3610
+ /* harmony export */ STATUS_COMPLETE: () => (/* binding */ STATUS_COMPLETE),
3611
+ /* harmony export */ STATUS_INCOMPLETE: () => (/* binding */ STATUS_INCOMPLETE),
3612
+ /* harmony export */ STATUS_UNASSIGNED: () => (/* binding */ STATUS_UNASSIGNED),
3613
+ /* harmony export */ useTicketDetails: () => (/* binding */ useTicketDetails)
3614
+ /* harmony export */ });
3615
+ const STATUS_COMPLETE = "Complete";
3616
+ const STATUS_INCOMPLETE = "Incomplete";
3617
+ const STATUS_CANCELLED = "Cancelled";
3618
+ const STATUS_UNASSIGNED = "Unassigned";
3619
+ const useTicketDetails = ticket => {
3620
+ const getStatus = () => {
3621
+ if (!ticket.is_active) return STATUS_CANCELLED;
3622
+ if (ticket.owner_id === 0) return STATUS_UNASSIGNED;
3623
+ if (!ticket.owner?.first_name || !ticket.owner?.last_name) return STATUS_INCOMPLETE;
3624
+ return ticket.owner.status;
3625
+ };
3626
+ if (!ticket) return {};
3627
+ const status = getStatus();
3628
+ const isActive = ticket.is_active && status !== STATUS_CANCELLED;
3629
+ const isRefundable = ticket.final_amount > 0 && ticket.final_amount > ticket.refunded_amount;
3630
+ const allowsDelegate = (ticket.ticket_type.allows_to_delegate || ticket.promo_code?.allows_to_delegate) && status !== STATUS_UNASSIGNED && !ticket.owner?.manager?.id && !ticket.owner?.manager_id;
3631
+ const isComplete = status === STATUS_COMPLETE;
3632
+ const isUnassigned = status === STATUS_UNASSIGNED;
3633
+ const isIncomplete = status === STATUS_INCOMPLETE;
3634
+ return {
3635
+ status,
3636
+ isComplete,
3637
+ isUnassigned,
3638
+ isIncomplete,
3639
+ isActive,
3640
+ isRefundable,
3641
+ allowsDelegate
3642
+ };
3643
+ };
3644
+
3645
+ /***/ }),
3646
+
3647
+ /***/ "./src/reducer.js":
3648
+ /*!************************!*\
3649
+ !*** ./src/reducer.js ***!
3650
+ \************************/
3651
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3652
+
3653
+ __webpack_require__.r(__webpack_exports__);
3654
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3655
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
3656
+ /* harmony export */ });
3657
+ /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openstack-uicore-foundation/lib/security/actions */ "openstack-uicore-foundation/lib/security/actions");
3658
+ /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__);
3659
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
3660
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
3661
+ /**
3662
+ * Copyright 2024 OpenStack Foundation
3663
+ * Licensed under the Apache License, Version 2.0 (the "License");
3664
+ * you may not use this file except in compliance with the License.
3665
+ * You may obtain a copy of the License at
3666
+ * http://www.apache.org/licenses/LICENSE-2.0
3667
+ * Unless required by applicable law or agreed to in writing, software
3668
+ * distributed under the License is distributed on an "AS IS" BASIS,
3669
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3670
+ * See the License for the specific language governing permissions and
3671
+ * limitations under the License.
3672
+ * */
3673
+
3674
+
3675
+
3676
+ const DEFAULT_STATE = {
3677
+ summit: null,
3678
+ user: {},
3679
+ widgetLoading: false,
3680
+ memberOrders: [],
3681
+ extraQuestions: [],
3682
+ errors: {},
3683
+ loading: false,
3684
+ isOrderLoading: false,
3685
+ orders_current_page: 1,
3686
+ orders_last_page: 1,
3687
+ orders_per_page: 5,
3688
+ orders_total: 0,
3689
+ ticket_current_page: 1,
3690
+ ticket_last_page: 1,
3691
+ ticket_per_page: 5,
3692
+ ticket_total: 0
3693
+ };
3694
+ const WidgetReducer = function () {
3695
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE;
3696
+ let {
3697
+ type,
3698
+ payload
3699
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3700
+ switch (type) {
3701
+ case openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__.LOGOUT_USER:
3702
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_STATE:
3703
+ return DEFAULT_STATE;
3704
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_FILTER:
3705
+ return {
3706
+ ...state,
3707
+ orders_current_page: 1,
3708
+ orders_last_page: 1
3709
+ };
3710
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_SUMMIT:
3711
+ return {
3712
+ ...state,
3713
+ summit: payload
3714
+ };
3715
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_USER:
3716
+ return {
3717
+ ...state,
3718
+ user: payload
3719
+ };
3720
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_USER_ORDERS:
3721
+ {
3722
+ const {
3723
+ memberOrders
3724
+ } = state;
3725
+ const {
3726
+ data,
3727
+ total,
3728
+ current_page
3729
+ } = payload.response;
3730
+ return {
3731
+ ...state,
3732
+ memberOrders: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...memberOrders, ...data],
3733
+ orders_total: total,
3734
+ orders_current_page: current_page
3735
+ };
3736
+ }
3737
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_TICKETS_BY_ORDER:
3738
+ {
3739
+ const {
3740
+ memberOrders
3741
+ } = state;
3742
+ const {
3743
+ data,
3744
+ total,
3745
+ current_page,
3746
+ last_page
3747
+ } = payload.response;
3748
+ const formerOrder = memberOrders.find(o => o.id === data[0]?.order.id);
3749
+ const updatedOrder = {
3750
+ ...formerOrder,
3751
+ memberTickets: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...formerOrder.memberTickets, ...data],
3752
+ tickets_page_current: current_page,
3753
+ tickets_page_last: last_page,
3754
+ tickets_total: total
3755
+ };
3756
+ return {
3757
+ ...state,
3758
+ memberOrders: memberOrders.map(mo => mo.id === updatedOrder.id ? updatedOrder : mo)
3759
+ };
3760
+ }
3761
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.RECEIVE_EXTRA_QUESTIONS:
3762
+ {
3763
+ const {
3764
+ data,
3765
+ total,
3766
+ current_page
3767
+ } = payload.response;
3768
+ return {
3769
+ ...state,
3770
+ extraQuestions: data
3771
+ };
3772
+ }
3773
+ default:
3774
+ return state;
3775
+ }
3776
+ };
3777
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WidgetReducer);
3778
+
3779
+ /***/ }),
3780
+
3781
+ /***/ "./src/store.js":
3782
+ /*!**********************!*\
3783
+ !*** ./src/store.js ***!
3784
+ \**********************/
3785
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3786
+
3787
+ __webpack_require__.r(__webpack_exports__);
3788
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3789
+ /* harmony export */ getStore: () => (/* binding */ getStore),
3790
+ /* harmony export */ useInitStore: () => (/* binding */ useInitStore)
3791
+ /* harmony export */ });
3792
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3793
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3794
+ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ "@reduxjs/toolkit");
3795
+ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__);
2115
3796
  /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-persist */ "redux-persist");
2116
3797
  /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(redux_persist__WEBPACK_IMPORTED_MODULE_2__);
2117
3798
  /* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-persist/lib/storage */ "redux-persist/lib/storage");
@@ -2468,14 +4149,15 @@ __webpack_require__.r(__webpack_exports__);
2468
4149
  /* harmony export */ orderTicketNumberTruncated: () => (/* binding */ _b),
2469
4150
  /* harmony export */ orderWrapper: () => (/* binding */ _c),
2470
4151
  /* harmony export */ reassignButton: () => (/* binding */ _d),
2471
- /* harmony export */ tabButtons: () => (/* binding */ _e),
2472
- /* harmony export */ ticketActionButtons: () => (/* binding */ _f),
2473
- /* harmony export */ ticketListContainer: () => (/* binding */ _10),
2474
- /* harmony export */ ticketNo: () => (/* binding */ _11),
2475
- /* harmony export */ ticketOwnerEmail: () => (/* binding */ _12),
2476
- /* harmony export */ ticketTicketType: () => (/* binding */ _13),
2477
- /* harmony export */ viewFinishTicketButton: () => (/* binding */ _14),
2478
- /* harmony export */ viewMoreButton: () => (/* binding */ _15)
4152
+ /* harmony export */ reversed: () => (/* binding */ _e),
4153
+ /* harmony export */ tabButtons: () => (/* binding */ _f),
4154
+ /* harmony export */ ticketActionButtons: () => (/* binding */ _10),
4155
+ /* harmony export */ ticketListContainer: () => (/* binding */ _11),
4156
+ /* harmony export */ ticketNo: () => (/* binding */ _12),
4157
+ /* harmony export */ ticketOwnerEmail: () => (/* binding */ _13),
4158
+ /* harmony export */ ticketTicketType: () => (/* binding */ _14),
4159
+ /* harmony export */ viewFinishTicketButton: () => (/* binding */ _15),
4160
+ /* harmony export */ viewMoreButton: () => (/* binding */ _16)
2479
4161
  /* harmony export */ });
2480
4162
  // extracted by mini-css-extract-plugin
2481
4163
  var _1 = "assignTicketButton___zzLsc";
@@ -2491,14 +4173,106 @@ var _a = "orderTicketNoContainer___vqohN";
2491
4173
  var _b = "orderTicketNumberTruncated___HXmdw";
2492
4174
  var _c = "orderWrapper___yDBAo";
2493
4175
  var _d = "reassignButton___RojM5";
2494
- var _e = "tabButtons___xTyJA";
2495
- var _f = "ticketActionButtons___rpSMQ";
2496
- var _10 = "ticketListContainer___cfmrr";
2497
- var _11 = "ticketNo___a2iM9";
2498
- var _12 = "ticketOwnerEmail___Zt4OE";
2499
- var _13 = "ticketTicketType___Zq_f0";
2500
- var _14 = "viewFinishTicketButton___HF6Im";
2501
- var _15 = "viewMoreButton___K_1zT";
4176
+ var _e = "reversed___DFea_";
4177
+ var _f = "tabButtons___xTyJA";
4178
+ var _10 = "ticketActionButtons___rpSMQ";
4179
+ var _11 = "ticketListContainer___cfmrr";
4180
+ var _12 = "ticketNo___a2iM9";
4181
+ var _13 = "ticketOwnerEmail___Zt4OE";
4182
+ var _14 = "ticketTicketType___Zq_f0";
4183
+ var _15 = "viewFinishTicketButton___HF6Im";
4184
+ var _16 = "viewMoreButton___K_1zT";
4185
+
4186
+
4187
+
4188
+ /***/ }),
4189
+
4190
+ /***/ "./src/components/TicketDetail/components/RegistrationDisclaimer/styles.module.scss":
4191
+ /*!******************************************************************************************!*\
4192
+ !*** ./src/components/TicketDetail/components/RegistrationDisclaimer/styles.module.scss ***!
4193
+ \******************************************************************************************/
4194
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4195
+
4196
+ __webpack_require__.r(__webpack_exports__);
4197
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4198
+ /* harmony export */ wrapper: () => (/* binding */ _1)
4199
+ /* harmony export */ });
4200
+ // extracted by mini-css-extract-plugin
4201
+ var _1 = "wrapper___EwORz";
4202
+
4203
+
4204
+
4205
+ /***/ }),
4206
+
4207
+ /***/ "./src/components/TicketDetail/components/TicketOwnerFields/styles.module.scss":
4208
+ /*!*************************************************************************************!*\
4209
+ !*** ./src/components/TicketDetail/components/TicketOwnerFields/styles.module.scss ***!
4210
+ \*************************************************************************************/
4211
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4212
+
4213
+ __webpack_require__.r(__webpack_exports__);
4214
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4215
+ /* harmony export */ infoNote: () => (/* binding */ _1),
4216
+ /* harmony export */ wrapper: () => (/* binding */ _2)
4217
+ /* harmony export */ });
4218
+ // extracted by mini-css-extract-plugin
4219
+ var _1 = "infoNote___i1XY9";
4220
+ var _2 = "wrapper___MAuNS";
4221
+
4222
+
4223
+
4224
+ /***/ }),
4225
+
4226
+ /***/ "./src/components/TicketDetail/styles.module.scss":
4227
+ /*!********************************************************!*\
4228
+ !*** ./src/components/TicketDetail/styles.module.scss ***!
4229
+ \********************************************************/
4230
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4231
+
4232
+ __webpack_require__.r(__webpack_exports__);
4233
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4234
+ /* harmony export */ actionButtonsContainer: () => (/* binding */ _1),
4235
+ /* harmony export */ additionalDetails: () => (/* binding */ _2),
4236
+ /* harmony export */ attendeeContainer: () => (/* binding */ _3),
4237
+ /* harmony export */ attendeeInfoTitle: () => (/* binding */ _4),
4238
+ /* harmony export */ cancelBtn: () => (/* binding */ _5),
4239
+ /* harmony export */ closeBtn: () => (/* binding */ _6),
4240
+ /* harmony export */ copyBtn: () => (/* binding */ _7),
4241
+ /* harmony export */ delegatedTo: () => (/* binding */ _8),
4242
+ /* harmony export */ downloadBtn: () => (/* binding */ _9),
4243
+ /* harmony export */ footer: () => (/* binding */ _a),
4244
+ /* harmony export */ header: () => (/* binding */ _b),
4245
+ /* harmony export */ orderNumber: () => (/* binding */ _c),
4246
+ /* harmony export */ qrCode: () => (/* binding */ _d),
4247
+ /* harmony export */ qrNote: () => (/* binding */ _e),
4248
+ /* harmony export */ saveBtn: () => (/* binding */ _f),
4249
+ /* harmony export */ sendBtn: () => (/* binding */ _10),
4250
+ /* harmony export */ status: () => (/* binding */ _11),
4251
+ /* harmony export */ subtitle: () => (/* binding */ _12),
4252
+ /* harmony export */ ticketDetailContainer: () => (/* binding */ _13),
4253
+ /* harmony export */ title: () => (/* binding */ _14)
4254
+ /* harmony export */ });
4255
+ // extracted by mini-css-extract-plugin
4256
+ var _1 = "actionButtonsContainer___Auvrn";
4257
+ var _2 = "additionalDetails___mP1iJ";
4258
+ var _3 = "attendeeContainer___Q0VUz";
4259
+ var _4 = "attendeeInfoTitle___Lmrm4";
4260
+ var _5 = "cancelBtn___ggCdj";
4261
+ var _6 = "closeBtn___WNJlE";
4262
+ var _7 = "copyBtn____utA6";
4263
+ var _8 = "delegatedTo___SGVQI";
4264
+ var _9 = "downloadBtn___qjYhz";
4265
+ var _a = "footer___NIM7d";
4266
+ var _b = "header___Augnz";
4267
+ var _c = "orderNumber___L5Q5a";
4268
+ var _d = "qrCode___fwqZq";
4269
+ var _e = "qrNote___Gc7Kn";
4270
+ var _f = "saveBtn___NpOEV";
4271
+ var _10 = "sendBtn___koWM2";
4272
+ var _11 = "status___kwC8y";
4273
+ var _12 = "subtitle___y_NuO";
4274
+ var _13 = "ticketDetailContainer___b2TLR";
4275
+ var _14 = "title___wQzUN";
2502
4276
 
2503
4277
 
2504
4278
 
@@ -2552,6 +4326,16 @@ var _3 = "widgetHeader___yY5ge";
2552
4326
 
2553
4327
 
2554
4328
 
4329
+ /***/ }),
4330
+
4331
+ /***/ "@mui/icons-material":
4332
+ /*!**************************************!*\
4333
+ !*** external "@mui/icons-material" ***!
4334
+ \**************************************/
4335
+ /***/ ((module) => {
4336
+
4337
+ module.exports = require("@mui/icons-material");
4338
+
2555
4339
  /***/ }),
2556
4340
 
2557
4341
  /***/ "@mui/icons-material/Close":
@@ -2754,6 +4538,16 @@ module.exports = require("dayjs");
2754
4538
 
2755
4539
  /***/ }),
2756
4540
 
4541
+ /***/ "formik":
4542
+ /*!*************************!*\
4543
+ !*** external "formik" ***!
4544
+ \*************************/
4545
+ /***/ ((module) => {
4546
+
4547
+ module.exports = require("formik");
4548
+
4549
+ /***/ }),
4550
+
2757
4551
  /***/ "moment-timezone":
2758
4552
  /*!**********************************!*\
2759
4553
  !*** external "moment-timezone" ***!
@@ -2764,6 +4558,16 @@ module.exports = require("moment-timezone");
2764
4558
 
2765
4559
  /***/ }),
2766
4560
 
4561
+ /***/ "openstack-uicore-foundation/lib/components/raw-html":
4562
+ /*!**********************************************************************!*\
4563
+ !*** external "openstack-uicore-foundation/lib/components/raw-html" ***!
4564
+ \**********************************************************************/
4565
+ /***/ ((module) => {
4566
+
4567
+ module.exports = require("openstack-uicore-foundation/lib/components/raw-html");
4568
+
4569
+ /***/ }),
4570
+
2767
4571
  /***/ "openstack-uicore-foundation/lib/security/actions":
2768
4572
  /*!*******************************************************************!*\
2769
4573
  !*** external "openstack-uicore-foundation/lib/security/actions" ***!
@@ -2794,6 +4598,16 @@ module.exports = require("openstack-uicore-foundation/lib/utils/actions");
2794
4598
 
2795
4599
  /***/ }),
2796
4600
 
4601
+ /***/ "openstack-uicore-foundation/lib/utils/query-actions":
4602
+ /*!**********************************************************************!*\
4603
+ !*** external "openstack-uicore-foundation/lib/utils/query-actions" ***!
4604
+ \**********************************************************************/
4605
+ /***/ ((module) => {
4606
+
4607
+ module.exports = require("openstack-uicore-foundation/lib/utils/query-actions");
4608
+
4609
+ /***/ }),
4610
+
2797
4611
  /***/ "prop-types":
2798
4612
  /*!*****************************!*\
2799
4613
  !*** external "prop-types" ***!
@@ -2834,6 +4648,16 @@ module.exports = require("react-infinite-scroll-component");
2834
4648
 
2835
4649
  /***/ }),
2836
4650
 
4651
+ /***/ "react-qr-code":
4652
+ /*!********************************!*\
4653
+ !*** external "react-qr-code" ***!
4654
+ \********************************/
4655
+ /***/ ((module) => {
4656
+
4657
+ module.exports = require("react-qr-code");
4658
+
4659
+ /***/ }),
4660
+
2837
4661
  /***/ "react-redux":
2838
4662
  /*!******************************!*\
2839
4663
  !*** external "react-redux" ***!
@@ -2892,6 +4716,16 @@ module.exports = require("redux-persist/integration/react");
2892
4716
 
2893
4717
  module.exports = require("redux-persist/lib/storage");
2894
4718
 
4719
+ /***/ }),
4720
+
4721
+ /***/ "yup":
4722
+ /*!**********************!*\
4723
+ !*** external "yup" ***!
4724
+ \**********************/
4725
+ /***/ ((module) => {
4726
+
4727
+ module.exports = require("yup");
4728
+
2895
4729
  /***/ })
2896
4730
 
2897
4731
  /******/ });
@@ -3009,7 +4843,7 @@ __webpack_require__.r(__webpack_exports__);
3009
4843
 
3010
4844
 
3011
4845
 
3012
- function MyOrdersMyTicketsWidget(props) {
4846
+ const MyOrdersMyTicketsWidget = props => {
3013
4847
  const {
3014
4848
  loginUrl,
3015
4849
  supportEmail,
@@ -3071,7 +4905,7 @@ function MyOrdersMyTicketsWidget(props) {
3071
4905
  })]
3072
4906
  })
3073
4907
  });
3074
- }
4908
+ };
3075
4909
  MyOrdersMyTicketsWidget.propTypes = {
3076
4910
  loginUrl: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
3077
4911
  supportEmail: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
@@ -3084,4 +4918,4 @@ MyOrdersMyTicketsWidget.propTypes = {
3084
4918
  /******/ })()
3085
4919
  ;
3086
4920
  });
3087
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QztFQUVWLG9CQUNFMEMsc0RBQUEsQ0FBQzRZLGlEQUFRO0lBQUN0RSxLQUFLLEVBQUVBLEtBQU07SUFBQXBULFFBQUEsZUFDckJoQix1REFBQSxDQUFDMlksd0VBQVc7TUFDVlUsWUFBWSxFQUFFUCxnQkFBaUI7TUFDL0J6RyxPQUFPLEVBQUUsSUFBSztNQUNkMEMsU0FBUyxFQUFFQSxTQUFVO01BQUEvVCxRQUFBLGdCQUVyQmxCLHNEQUFBLENBQUNxQyw4Q0FBRztRQUFDZixFQUFFLEVBQUU7VUFBRTBELE9BQU8sRUFBRTtZQUFFa0MsRUFBRSxFQUFFLENBQUM7WUFBRTBCLEVBQUUsRUFBRSxDQUFDO1lBQUVDLEVBQUUsRUFBRTtVQUFFO1FBQUUsQ0FBRTtRQUFBM0gsUUFBQSxlQUM1Q2xCLHNEQUFBO1VBQUFrQixRQUFBLEVBQUtWLENBQUMsQ0FBQyxjQUFjO1FBQUMsQ0FBSztNQUFDLENBQ3pCLENBQUMsZUFDTlIsc0RBQUEsQ0FBQzJILG1FQUFlO1FBQ2R5TSxRQUFRLEVBQUVBLFFBQVM7UUFDbkIyRSxZQUFZLEVBQUVBLFlBQWE7UUFDM0I5YyxNQUFNLEVBQUVBLE1BQU87UUFDZkYsVUFBVSxFQUFFQTtNQUFXLENBQ3hCLENBQUM7SUFBQSxDQUNTO0VBQUMsQ0FDTixDQUFDO0FBRWY7QUFFQStjLHVCQUF1QixDQUFDOVcsU0FBUyxHQUFHO0VBQ2xDb1MsUUFBUSxFQUFFL1UsMERBQWdCO0VBQzFCMFosWUFBWSxFQUFFMVosMERBQWdCO0VBQzlCcEQsTUFBTSxFQUFFb0QsMERBQWdCO0VBQ3hCdEQsVUFBVSxFQUFFc0QsMERBQWdCO0VBQzVCL0IsSUFBSSxFQUFFK0IsMERBQWdCdUw7QUFDeEIsQ0FBQztBQUVELGlFQUFla08sdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlck51bWJlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgZ2V0UmVxdWVzdCxcbiAgZGVsZXRlUmVxdWVzdCxcbiAgY3JlYXRlQWN0aW9uLFxuICBzdG9wTG9hZGluZyxcbiAgc3RhcnRMb2FkaW5nLFxuICBwdXRSZXF1ZXN0XG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgT05FX1BBR0VfTkVYVFxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTID0gXCJHRVRfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUi9TT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmopID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9W10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX09QCR7ZmlsdGVyT2JqLnZhbHVlfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+XG4gIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCI7XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9LFxuICAgIG5leHQgPSBmYWxzZVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2U6IG5leHQgPyBwYWdlICsgT05FX1BBR0VfTkVYVCA6IHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVByb2ZpbGUgPVxuICAocHJvZmlsZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCB7IGlkcEJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFKSgpKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfSURQX1BST0ZJTEUpLFxuICAgICAgLy8gVE9ETzogbmVlZCBJRFBfQkFTRV9VUkxcbiAgICAgIGAke2lkcEJhc2VVcmx9L2FwaS92MS91c2Vycy9tZWAsXG4gICAgICBwcm9maWxlLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiBwYXlsb2FkKVxuICAgICAgLmNhdGNoKCgpID0+IGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUpKCkpKTtcbiAgfTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHsgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXNlclN0YXRlOiB7IHVzZXJQcm9maWxlIH0sXG4gICAgICBzdW1taXRcbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGlmICghdXNlclByb2ZpbGUuaWQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZmlsdGVyOiBcInN0YXR1cz09UGFpZFwiLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm9yZGVyLmlkLG9yZGVyLm93bmVyX2ZpcnN0X25hbWUsb3JkZXIub3duZXJfbGFzdF9uYW1lLG9yZGVyLm93bmVyX2VtYWlsLG93bmVyLmZpcnN0X25hbWUsb3duZXIubGFzdF9uYW1lLG93bmVyLnN0YXR1c1wiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoeyBvcmRlcklkLCBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIG9yZGVyU3RhdGU6IHsgY3VycmVudF9wYWdlOiBvcmRlclBhZ2UgfSxcbiAgICAgIHRpY2tldFN0YXRlOiB7IGN1cnJlbnRfcGFnZTogdGlja2V0UGFnZSB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuXG4gICAgICAgIGlmICh0aWNrZXQub3JkZXJfaWQpIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyT3JkZXJzKHsgcGFnZTogb3JkZXJQYWdlIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyVGlja2V0cyh7IHBhZ2U6IHRpY2tldFBhZ2UgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICB9O1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFN1bW1pdCA9IChzdW1taXQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVU1NSVQpKHN1bW1pdCkpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEYXlqcyB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfREFURSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEYXRlUGlja2VyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IFtkYXRlVmFsdWUsIHNldERhdGVWYWx1ZV0gPSB1c2VTdGF0ZShub3cpO1xuICBjb25zdCBvbkRhdGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgc2V0RGF0ZVZhbHVlKHZhbCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbC4kZCk7XG4gICAgY29uc3QgeyBsb3dlciwgdXBwZXIgfSA9IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyhkYXRlKTtcbiAgICBvbkZpbHRlcih7XG4gICAgICB0eXBlOiBGSUxURVJfVkFSX0RBVEUsXG4gICAgICBuYW1lOiBcImNyZWF0ZWRcIixcbiAgICAgIGRhdGUsXG4gICAgICBsb3dlcixcbiAgICAgIHVwcGVyXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uUmVzZXRBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHNldERhdGVWYWx1ZShub3cpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckRhdGVMYWJlbH0+e3QoXCJmaWx0ZXIucHVyY2hhc2VkX29uXCIpfTwvZGl2PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZVBpY2tlckNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVwaWNrZXJDbG9zZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblJlc2V0QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8TG9jYWxpemF0aW9uUHJvdmlkZXIgZGF0ZUFkYXB0ZXI9e0FkYXB0ZXJEYXlqc30+XG4gICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbGVuZGFyRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTG9jYWxpemF0aW9uUHJvdmlkZXI+XG4gICAgICA8L1N0YWNrPlxuICAgIDwvPlxuICApO1xufVxuXG5CYXNpY0RhdGVQaWNrZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBCYXNpY0RhdGVQaWNrZXIgZnJvbSBcIi4vRGF0ZXBpY2tlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgey8qKiBjdXJyZW50bHkganVzdCBzaG93aW5nIFwiMVwiIGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG9ubHkgZmlsdGVyaW5nIG9uZSBjcml0ZXJpYSAtIGNyZWF0ZWQgZGF0ZSAqL31cbiAgICAgICAge2ZpbHRlck51bUFjdGl2ZSAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlck51bUFjdGl2ZX0+MTwvZGl2Pn1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0RhdGVQaWNrZXIgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8QmFzaWNEYXRlUGlja2VyXG4gICAgICAgICAgb25SZXNldD17KCkgPT4ge1xuICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKGZhbHNlKTtcbiAgICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25GaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIG9uRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufVxuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG5hbWU6IFwibnVtYmVyXCIsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gICAgb25SZXNldCgpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFNvcnQoeyBvblNvcnQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9PlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImRlc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJhc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyU29ydFNlYXJjaCh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICB4cz17Nn1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGdhcD17Mn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5GaWx0ZXJTb3J0U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJTb3J0U2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgRmlsdGVyU29ydFNlYXJjaCBmcm9tIFwiLi9GaWx0ZXJTb3J0U2VhcmNoXCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRVc2VyT3JkZXJzLCByZXNldEZpbHRlciB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE15T3JkZXJzVGlja2V0cygpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX3Blcl9wYWdlLFxuICAgIG9yZGVyc190b3RhbFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgW2hhc01vcmUsIHNldEhhc01vcmVdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtzZWFyY2hOZXh0LCBzZXRTZWFyY2hOZXh0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgW3NvcnQsIHNldFNvcnRdID0gdXNlU3RhdGUoe30pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTZWFyY2hOZXh0KGZhbHNlKTtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgcGFnZTogb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogb3JkZXJzX3Blcl9wYWdlLFxuICAgICAgICBuZXh0OiBzZWFyY2hOZXh0LFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgcmVzLnJlc3BvbnNlPy5kYXRhPy5sZW5ndGggPiBvcmRlcnNfcGVyX3BhZ2UgJiZcbiAgICAgICAgbWVtYmVyT3JkZXJzLmxlbmd0aCA9PT0gb3JkZXJzX3RvdGFsXG4gICAgICApXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpO1xuICAgIH0pO1xuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICB9LCBbZmlsdGVyLCBzb3J0LCBzZWFyY2hOZXh0XSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgID5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT5cbiAgICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgICA8L2gyPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bWVtYmVyT3JkZXJzLmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzLmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBzZXRTZWFyY2hOZXh0KHRydWUpfVxuICAgICAgICAgIGhhc01vcmU9e2hhc01vcmV9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgICAgPE9yZGVyc0xpc3Qga2V5PXtvcmRlci5pZH0gb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJTdW1tYXJ5VGFibGUoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uRW1haWxTdXBwb3J0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbWFpbFN1cHBvcnRDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeSh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn0gc3g9e3sgcHQ6IDQsIHB4OiA0IH19PlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJMaXN0SXRlbSh7IHRpY2tldHMsIHRvdGFsLCBvblBhZ2luYXRlQ2xpY2ssIHN1bW1pdCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IHRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAodG90YWwgPiB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHMga2V5PXt0aWNrZXQuaWR9IHRpY2tldD17dGlja2V0fSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICkpfVxuICAgICAge3RpY2tldHM/Lmxlbmd0aCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufSBvbkNsaWNrPXtvblZpZXdNb3JlfT5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn0gb25DbGljaz17b25WaWV3TGVzc30+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUsIHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RUaWNrZXRzKHsgdGlja2V0LCBzdW1taXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBnZXRBY3RpdmVCdXR0b25BY3Rpb25zID0gKHRpY2tldCkgPT4ge1xuICAgIGlmICh0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICBjb25zdCBzaG93UmVhc3NpZ25CdXR0b24gPSAoKSA9PiB7XG4gICAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gICAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gICAgcmV0dXJuIGlzUmVhc3NpZ25hYmxlID8gKFxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn0+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApIDogKFxuICAgICAgXCJcIlxuICAgICk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEdyaWQga2V5PXt0aWNrZXQuaWR9IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn0gY29udGFpbmVyPlxuICAgICAgPEdyaWQgeHM9ezd9IHBhZGRpbmc9ezJ9IGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX0+XG4gICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17NX0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDIsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgIHt0aWNrZXQub3duZXI/LmVtYWlsID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTpcbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfT57dGlja2V0Lm93bmVyPy5lbWFpbH08L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICB0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKVxuICAgICAgICApfVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJlxuICAgICAgICAgICAgICAodGlja2V0Lm93bmVyID8gKFxuICAgICAgICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2dldEFjdGl2ZUJ1dHRvbkFjdGlvbnModGlja2V0KX1cbiAgICAgICAgICAgICAgICAgIHtzaG93UmVhc3NpZ25CdXR0b24oKX1cbiAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufT5cbiAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyTnVtYmVyKHsgbnVtYmVyLCBjb3B5ID0gZmFsc2UsIHRydW5jYXRlZCA9IGZhbHNlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Tm9Db250YWluZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXt0cnVuY2F0ZWQgJiYgc3R5bGVzLm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkfT5cbiAgICAgICAge251bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjb3B5ICYmIChcbiAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG51bWJlcil9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5PcmRlck51bWJlci5wcm9wVHlwZXMgPSB7XG4gIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29weTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTnVtYmVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUYWJQYW5lbChwcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIG9yZGVyLFxuICB0b3RhbCxcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5kZXRhaWxzUmVxdWlyZWRMYWJlbH0+XG4gICAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3I6IFwiI0ZGOTgwMFwiIH19IC8+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHRleHRDb2xvcj1cIiMwMDBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgICAgVGFiSW5kaWNhdG9yUHJvcHM9e3tcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwiIzAwMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSB0aWNrZXRzPXt0aWNrZXRzfSAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17Mn0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnkgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gdGlja2V0cz17dGlja2V0c30gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRPcmRlclRpY2tldHMsIGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4vT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuXG5mdW5jdGlvbiBPcmRlcnNMaXN0KHByb3BzKSB7XG4gIGNvbnN0IHsgc3VtbWl0LCBvcmRlciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHBlcl9wYWdlLCBsYXN0X3BhZ2UsIG1lbWJlck9yZGVycyB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcbiAgY29uc3QgZmV0Y2hUaWNrZXRzQnlPcmRlciA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIGN1cnJlbnRfcGFnZTogbGFzdF9wYWdlLFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZVxuICAgICAgfSlcbiAgICApLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoVGlja2V0c0J5T3JkZXIoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlLFxuICAgICAgICBuZXh0OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99PlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e29yZGVyLm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e2dldE9yZGVyVGlja2V0cyhtZW1iZXJPcmRlcnMsIG9yZGVyLmlkKX1cbiAgICAgICAgICB0b3RhbD17b3JkZXIudGlja2V0c190b3RhbH1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9e2RldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFRpY2tldFN0YXR1cyh7IHRpY2tldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRfcmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzLmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSA9IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIjtcbiAgY29uc3QgdGlja2V0X3VuYXNzaWduZWQgPSB0aWNrZXQub3duZXJfaWQgPT09IDA7XG4gIGNvbnN0IHRpY2tldF9jb21wbGV0ZSA9IHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRfcmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3N0YXR1c19pbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHt0aWNrZXRfdW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X2NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZF9yZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NVTU1JVCxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVJcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDEsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDEsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NVTU1JVDpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzdW1taXQ6IHBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHsgY2xpZW50SWQsIGxvZ2luVXJsLCBzdW1taXQsIGFwaUJhc2VVcmwgfSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZTo6IGdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gMztcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIE9ORV9EQVlcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheS5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0IHx8ICF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fUm9pbVJcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fb29JMFZcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19faW1famhcIjtcbnZhciBfNCA9IFwiY29udGFpbmVyX19fTjNZNFhcIjtcbnZhciBfNSA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX0pXMmxPXCI7XG52YXIgXzYgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1Y5Z0hDXCI7XG52YXIgXzcgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JHcFlWXCI7XG52YXIgXzggPSBcImZpbHRlckRhdGVMYWJlbF9fX2lmRDRwXCI7XG52YXIgXzkgPSBcImZpbHRlckljb25fX19sMjFLSVwiO1xudmFyIF9hID0gXCJmaWx0ZXJMYWJlbF9fX19QMHduXCI7XG52YXIgX2IgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19WbWRHcVwiO1xudmFyIF9jID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19WdUhDSlwiO1xudmFyIF9kID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fYXJCdlFcIjtcbnZhciBfZSA9IFwibGFiZWxfX195TkZ5alwiO1xudmFyIF9mID0gXCJzaG93RGF0ZVBpY2tlcl9fX1VwUWJwXCI7XG52YXIgXzEwID0gXCJzb3J0Q29udGFpbmVyX19fbFJzalVcIjtcbnZhciBfMTEgPSBcInNvcnRJY29uX19fZlZWNUtcIjtcbnZhciBfMTIgPSBcInNvcnRMYWJlbF9fX1VxTFRDXCI7XG52YXIgXzEzID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX2NtbkJEXCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjb250YWluZXJcIiwgXzUgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF83IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF84IGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF85IGFzIFwiZmlsdGVySWNvblwiLCBfYSBhcyBcImZpbHRlckxhYmVsXCIsIF9iIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfYyBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZCBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgX2UgYXMgXCJsYWJlbFwiLCBfZiBhcyBcInNob3dEYXRlUGlja2VyXCIsIF8xMCBhcyBcInNvcnRDb250YWluZXJcIiwgXzExIGFzIFwic29ydEljb25cIiwgXzEyIGFzIFwic29ydExhYmVsXCIsIF8xMyBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlck9yZGVyTnVtYmVyX19fUnFDYkNcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZE51bWJlcl9fX3BxeV9JXCI7XG52YXIgXzcgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfOCA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlck9yZGVyTnVtYmVyXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZE51bWJlclwiLCBfNyBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF84IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzMgPSBcImNvcHlJY29uX19fTmtIR09cIjtcbnZhciBfNCA9IFwiZGV0YWlsc1JlcXVpcmVkTGFiZWxfX19ZMmtvclwiO1xudmFyIF81ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF82ID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgXzcgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfOCA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfOSA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfYSA9IFwib3JkZXJUaWNrZXROb0NvbnRhaW5lcl9fX3Zxb2hOXCI7XG52YXIgX2IgPSBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkX19fSFhtZHdcIjtcbnZhciBfYyA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfZCA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF9lID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfZiA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTEgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTIgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xMyA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzE0ID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMTUgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYmxhY2tCdXR0b25cIiwgXzMgYXMgXCJjb3B5SWNvblwiLCBfNCBhcyBcImRldGFpbHNSZXF1aXJlZExhYmVsXCIsIF81IGFzIFwiZGlzcGxheV9ub25lXCIsIF82IGFzIFwibGFiZWxcIiwgXzcgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfOCBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfOSBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfYSBhcyBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJcIiwgX2IgYXMgXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZFwiLCBfYyBhcyBcIm9yZGVyV3JhcHBlclwiLCBfZCBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF9lIGFzIFwidGFiQnV0dG9uc1wiLCBfZiBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzEwIGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTEgYXMgXCJ0aWNrZXROb1wiLCBfMTIgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xMyBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzE0IGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMTUgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm5vT3JkZXJzRm91bmRfX19Bb2cycFwiO1xudmFyIF8yID0gXCJzdW1taXRUaXRsZURhdGVfX19aMTlQbVwiO1xudmFyIF8zID0gXCJ3aWRnZXRIZWFkZXJfX195WTVnZVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8yIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8zIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi9jb21wb25lbnRzL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFN1bW1pdCwgc2V0VXNlciB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuZnVuY3Rpb24gTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQocHJvcHMpIHtcbiAgY29uc3QgeyBsb2dpblVybCwgc3VwcG9ydEVtYWlsLCBzdW1taXQsIGFwaUJhc2VVcmwsIHVzZXIsIGNsaWVudElkIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRTdW1taXQoc3VtbWl0KSk7XG4gIH0sIFtzdW1taXRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFVzZXIodXNlcikpO1xuICB9LCBbdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcnMudGl0bGVcIil9PC9oMz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxNeU9yZGVyc1RpY2tldHNcbiAgICAgICAgICBsb2dpblVybD17bG9naW5Vcmx9XG4gICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgYXBpQmFzZVVybD17YXBpQmFzZVVybH1cbiAgICAgICAgLz5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn1cblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiRklSU1RfUEFHRSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJPTkVfUEFHRV9ORVhUIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX1RJQ0tFVFMiLCJBU1NJR05fVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlciIsInR5cGUiLCJwdXNoIiwibmFtZSIsImxvd2VyIiwidXBwZXIiLCJ2YWx1ZSIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRVc2VyT3JkZXJzIiwiX3JlZiIsInBhZ2UiLCJwZXJQYWdlIiwic29ydCIsIm5leHQiLCJnZXRTdGF0ZSIsIl9yZWYyIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwic3VtbWl0IiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImZpbHRlcnMiLCJpZCIsInRoZW4iLCJwYXlsb2FkIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsInVzZXIiLCJ1cGRhdGVQcm9maWxlIiwicHJvZmlsZSIsIl9yZWYzIiwiaWRwQmFzZVVybCIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJTdGF0ZSIsInVzZXJQcm9maWxlIiwiZXhwYW5kIiwiZmllbGRzIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsIm9yZGVyU3RhdGUiLCJjdXJyZW50X3BhZ2UiLCJvcmRlclBhZ2UiLCJ0aWNrZXRTdGF0ZSIsInRpY2tldFBhZ2UiLCJzZXRTdW1taXQiLCJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiU3RhY2siLCJ1c2VUcmFuc2xhdGlvbiIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0IiwidCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsInZhbCIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwib25DbGljayIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5Iiwib25DaGFuZ2UiLCJwcm9wVHlwZXMiLCJmdW5jIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJCb3giLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsImtleSIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwibGFiZWwiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsInNlYXJjaE5leHQiLCJzZXRTZWFyY2hOZXh0Iiwic2V0RmlsdGVyIiwic2V0U29ydCIsImZldGNoRGF0YSIsInJlcyIsInJlc3BvbnNlIiwiZGF0YSIsIndpZGdldEhlYWRlciIsIm1kIiwibGciLCJzdW1taXRUaXRsZURhdGUiLCJkYXRhTGVuZ3RoIiwic2Nyb2xsVGhyZXNob2xkIiwibWFwIiwibm9PcmRlcnNGb3VuZCIsIkRpdmlkZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRzIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm51bWJlciIsIm9iamVjdCIsImFycmF5T2YiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJvcmRlclN1bW1hcnlCdXR0b24iLCJ2YXJpYW50Iiwic2l6ZSIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJPcmRlck51bWJlciIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsInVzZU5vdyIsImdldEFjdGl2ZUJ1dHRvbkFjdGlvbnMiLCJvd25lciIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJzaG93UmVhc3NpZ25CdXR0b24iLCJyZWFzc2lnbkRhdGUiLCJpc1JlYXNzaWduYWJsZSIsInJlYXNzaWduQnV0dG9uIiwib3JkZXJXcmFwcGVyIiwidGlja2V0VGlja2V0VHlwZSIsInRpY2tldE93bmVyRW1haWwiLCJpc19hY3RpdmUiLCJ0aWNrZXRObyIsImNvcHkiLCJ0cnVuY2F0ZWQiLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwib3JkZXJUaWNrZXROb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkIiwiY29weUljb24iLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJib29sIiwiVGFicyIsIlRhYiIsIkVycm9ySWNvbiIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsInJvbGUiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJoYW5kbGVDaGFuZ2UiLCJfIiwibmV3VmFsdWUiLCJtb3JlRGV0YWlscyIsImRldGFpbHNSZXF1aXJlZExhYmVsIiwidGlja2V0TGlzdENvbnRhaW5lciIsImJvcmRlckNvbG9yIiwidGV4dENvbG9yIiwiVGFiSW5kaWNhdG9yUHJvcHMiLCJzdHlsZSIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0T3JkZXJUaWNrZXRzIiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImxhc3RfcGFnZSIsInRoZW1lIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwibWVtYmVyVGlja2V0cyIsImZpbmQiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY29uc29sZSIsImxvZyIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidGlja2V0c190b3RhbCIsIkNvbnRhaW5lciIsImlzQWN0aXZlIiwicmVmdW5kX3JlcXVlc3RzIiwiciIsInRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSIsInRpY2tldF91bmFzc2lnbmVkIiwib3duZXJfaWQiLCJ0aWNrZXRfY29tcGxldGUiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25QaWxsIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIkxPR09VVF9VU0VSIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJlcnJvcnMiLCJsb2FkaW5nIiwiaXNPcmRlckxvYWRpbmciLCJvcmRlcnNfbGFzdF9wYWdlIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZm9ybWVyT3JkZXIiLCJvIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsInVzZU1lbW8iLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk1JTExJU0VDX1RPX1NFQyIsIk9ORV9EQVkiLCJtb21lbnQiLCJsb2NhbGUiLCJvcHRpb25zIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInN0YXJ0RGF5Iiwic3RhcnRfZGF0ZSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImVuZF9kYXRlIiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInJlZnVuZGVkX2Ftb3VudCIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwiTWF0aCIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsIlByb3ZpZGVyIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
4921
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGdUQ7QUFDSDtBQUt6QjtBQUVwQixNQUFNVyxXQUFXLEdBQUcsYUFBYTtBQUNqQyxNQUFNQyxZQUFZLEdBQUcsY0FBYzs7QUFFMUM7QUFDTyxNQUFNQyxlQUFlLEdBQUcsWUFBWTtBQUNwQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxtQkFBbUIsR0FBRyxxQkFBcUI7QUFDakQsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9COztBQUV0RDtBQUNPLE1BQU1DLFdBQVcsR0FBRyxhQUFhO0FBQ2pDLE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxtQkFBbUIsR0FBRyxxQkFBcUI7QUFDakQsTUFBTUMsb0JBQW9CLEdBQUcsc0JBQXNCO0FBQ25ELE1BQU1DLDBCQUEwQixHQUFHLDRCQUE0QjtBQUMvRCxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9CO0FBQy9DLE1BQU1DLHVCQUF1QixHQUFHLHlCQUF5QjtBQUN6RCxNQUFNQyxvQkFBb0IsR0FBRztFQUNsQ0MsS0FBSyxFQUFFLGdCQUFnQjtFQUN2QkMsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsUUFBUSxFQUFFLG9CQUFvQjtFQUM5QkMsT0FBTyxFQUFFLGtCQUFrQjtFQUMzQkMsa0JBQWtCLEVBQUUscUJBQXFCO0VBQ3pDQyxjQUFjLEVBQUU7QUFDbEIsQ0FBQzs7QUFFRDtBQUNPLE1BQU1DLHlCQUF5QixHQUFHLDJCQUEyQjtBQUM3RCxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9CO0FBQy9DLE1BQU1DLFFBQVEsR0FBRyxVQUFVOztBQUVsQztBQUNPLE1BQU1DLFVBQVUsR0FBRyxZQUFZO0FBQy9CLE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUMzRCxNQUFNQywwQkFBMEIsR0FBRyw0QkFBNEI7QUFDL0QsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBRTNELE1BQU1DLFVBQVUsR0FBR0EsQ0FBQSxLQUFPQyxRQUFRLElBQUs7RUFDNUNBLFFBQVEsQ0FBQ3hDLDJGQUFZLENBQUNRLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVNLE1BQU1pQyxXQUFXLEdBQUdBLENBQUEsS0FBT0QsUUFBUSxJQUFLO0VBQzdDQSxRQUFRLENBQUN4QywyRkFBWSxDQUFDUyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7O0FBRUQ7QUFDTyxNQUFNaUMsZUFBZSxHQUFHLGlCQUFpQjtBQUN6QyxNQUFNQyx1QkFBdUIsR0FBRyx5QkFBeUI7O0FBRWhFO0FBQ08sTUFBTUMsV0FBVyxHQUFJQyxTQUFTLElBQUs7RUFDeEMsTUFBTUMsTUFBTSxHQUFHLEVBQUU7RUFDakIsSUFBSUQsU0FBUyxDQUFDRSxJQUFJLEtBQUtMLGVBQWUsRUFBRTtJQUN0Q0ksTUFBTSxDQUFDRSxJQUFJLENBQUMsR0FBR0gsU0FBUyxDQUFDSSxJQUFJLEtBQUtKLFNBQVMsQ0FBQ0ssS0FBSyxLQUFLTCxTQUFTLENBQUNNLEtBQUssRUFBRSxDQUFDO0VBQzFFO0VBQ0EsSUFBSU4sU0FBUyxDQUFDRSxJQUFJLEtBQUtKLHVCQUF1QixFQUFFO0lBQzlDRyxNQUFNLENBQUNFLElBQUksQ0FBQyxHQUFHSCxTQUFTLENBQUNJLElBQUksS0FBS0osU0FBUyxDQUFDTyxLQUFLLEVBQUUsQ0FBQztFQUN0RDtFQUNBLE9BQU9OLE1BQU07QUFDZixDQUFDO0FBRU0sTUFBTU8sZ0JBQWdCLEdBQUlDLFNBQVMsSUFDeENBLFNBQVMsS0FBSyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUc7O0FBRWpDO0FBQ08sTUFBTUMsYUFBYSxHQUN4QkMsSUFBQTtFQUFBLElBQUM7SUFDQ0MsSUFBSSxHQUFHcEQsd0RBQVU7SUFDakJxRCxPQUFPLEdBQUdwRCxvRUFBc0I7SUFDaEN3QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1hhLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVEMsSUFBSSxHQUFHO0VBQ1QsQ0FBQyxHQUFBSixJQUFBO0VBQUEsT0FDRCxPQUFPaEIsUUFBUSxFQUFFcUIsUUFBUSxFQUFBQyxLQUFBLEtBQXFCO0lBQUEsSUFBbkI7TUFBRUM7SUFBVyxDQUFDLEdBQUFELEtBQUE7SUFDdkMsTUFBTTtNQUNKRSxXQUFXLEVBQUU7UUFBRUM7TUFBTztJQUN4QixDQUFDLEdBQUdKLFFBQVEsQ0FBQyxDQUFDO0lBRWQsTUFBTUssV0FBVyxHQUFHLE1BQU05RCxpRUFBb0IsQ0FBQyxDQUFDLENBQUMrRCxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7SUFFRDdCLFFBQVEsQ0FBQ3RDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU1vRSxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFTCxXQUFXO01BQ3pCTSxLQUFLLEVBQUUsS0FBSztNQUNaLFVBQVUsRUFBRSxDQUFDLGNBQWMsQ0FBQztNQUM1QkMsU0FBUyxFQUFFLE1BQU07TUFDakJoQixJQUFJLEVBQUVHLElBQUksR0FBR0gsSUFBSSxHQUFHbEQsMkRBQWEsR0FBR2tELElBQUk7TUFDeENpQixRQUFRLEVBQUVoQjtJQUNaLENBQUM7SUFFRCxJQUFJaUIsTUFBTSxDQUFDQyxJQUFJLENBQUM5QixNQUFNLENBQUMsQ0FBQytCLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDbEMsTUFBTUMsT0FBTyxHQUFHbEMsV0FBVyxDQUFDRSxNQUFNLENBQUM7TUFDbkN3QixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHQSxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBR1EsT0FBTyxDQUFDO0lBQzFEO0lBQ0EsSUFBSUgsTUFBTSxDQUFDQyxJQUFJLENBQUNqQixJQUFJLENBQUMsQ0FBQ2tCLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDaENQLE1BQU0sQ0FBQ0UsS0FBSyxHQUFHLEdBQUduQixnQkFBZ0IsQ0FBQ00sSUFBSSxDQUFDTCxTQUFTLENBQUMsR0FBR0ssSUFBSSxDQUFDVixJQUFJLEVBQUU7SUFDbEU7SUFFQSxPQUFPbkQseUZBQVUsQ0FDZixJQUFJLEVBQ0pFLDJGQUFZLENBQUNVLGVBQWUsQ0FBQyxFQUM3QixHQUFHcUQsVUFBVSxtQkFBbUJFLE1BQU0sQ0FBQ2MsRUFBRSxZQUFZLEVBQ3JEbEYsMkZBQ0YsQ0FBQyxDQUFDeUUsTUFBTSxDQUFDLENBQUM5QixRQUFRLENBQUMsQ0FDaEJ3QyxJQUFJLENBQUVDLE9BQU8sSUFBSztNQUNqQnpDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO01BQ3ZCLE9BQU9nRixPQUFPO0lBQ2hCLENBQUMsQ0FBQyxDQUNEZCxLQUFLLENBQUVlLENBQUMsSUFBSztNQUNaMUMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT2lGLENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNQyxnQkFBZ0IsR0FBSUMsT0FBTyxJQUFLLE1BQU81QyxRQUFRLElBQzFEQSxRQUFRLENBQUN4QywyRkFBWSxDQUFDWSxtQkFBbUIsQ0FBQyxDQUFDd0UsT0FBTyxDQUFDLENBQUM7O0FBRXREO0FBQ08sTUFBTUMsT0FBTyxHQUFJQyxJQUFJLElBQU05QyxRQUFRLElBQ3hDQSxRQUFRLENBQUN4QywyRkFBWSxDQUFDa0MsUUFBUSxDQUFDLENBQUNvRCxJQUFJLENBQUMsQ0FBQztBQUVqQyxNQUFNQyxhQUFhLEdBQ3ZCQyxPQUFPLElBQ1IsT0FBT2hELFFBQVEsRUFBQWlELEtBQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFQztFQUFXLENBQUMsR0FBQUQsS0FBQTtFQUM3QixNQUFNdkIsV0FBVyxHQUFHLE1BQU05RCxpRUFBb0IsQ0FBQyxDQUFDLENBQUMrRCxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7RUFFRDdCLFFBQVEsQ0FBQ3RDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU1vRSxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFTDtFQUNoQixDQUFDO0VBRUQxQixRQUFRLENBQUN4QywyRkFBWSxDQUFDK0IseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFbkQsT0FBTzVCLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDaUMsa0JBQWtCLENBQUM7RUFDaEM7RUFDQSxHQUFHeUQsVUFBVSxrQkFBa0IsRUFDL0JGLE9BQU8sRUFDUDNGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFFQyxPQUFPLElBQUtBLE9BQU8sQ0FBQyxDQUMxQmQsS0FBSyxDQUFDLE1BQU0zQixRQUFRLENBQUN4QywyRkFBWSxDQUFDZ0Msd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDOztBQUVIOztBQUVPLE1BQU0yRCxjQUFjLEdBQ3pCQyxLQUFBO0VBQUEsSUFBQztJQUFFbkMsSUFBSSxHQUFHcEQsd0RBQVU7SUFBRXFELE9BQU8sR0FBR3BELG9FQUFzQkE7RUFBQyxDQUFDLEdBQUFzRixLQUFBO0VBQUEsT0FDeEQsT0FBT3BELFFBQVEsRUFBRXFCLFFBQVEsRUFBQWdDLEtBQUEsS0FBcUI7SUFBQSxJQUFuQjtNQUFFOUI7SUFBVyxDQUFDLEdBQUE4QixLQUFBO0lBQ3ZDLE1BQU07TUFDSkMsU0FBUyxFQUFFO1FBQUVDO01BQVksQ0FBQztNQUMxQjlCO0lBQ0YsQ0FBQyxHQUFHSixRQUFRLENBQUMsQ0FBQztJQUNkLElBQUksQ0FBQ0ksTUFBTSxFQUFFLE9BQU9HLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTUgsV0FBVyxHQUFHLE1BQU05RCxpRUFBb0IsQ0FBQyxDQUFDLENBQUMrRCxLQUFLLENBQUMsTUFDckRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQ2pCLENBQUM7SUFFRCxJQUFJLENBQUMwQixXQUFXLENBQUNoQixFQUFFLEVBQUUsT0FBT1gsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUM1QzdCLFFBQVEsQ0FBQ3RDLDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU1vRSxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFTCxXQUFXO01BQ3pCcEIsTUFBTSxFQUFFLGNBQWM7TUFDdEJrRCxNQUFNLEVBQUUsMkJBQTJCO01BQ25DeEIsS0FBSyxFQUFFLEtBQUs7TUFDWnlCLE1BQU0sRUFDSix1SEFBdUg7TUFDekh4QixTQUFTLEVBQUUsTUFBTTtNQUNqQmhCLElBQUk7TUFDSmlCLFFBQVEsRUFBRWhCO0lBQ1osQ0FBQztJQUNELE9BQU81RCx5RkFBVSxDQUNmLElBQUksRUFDSkUsMkZBQVksQ0FBQ2MsV0FBVyxDQUFDLEVBQ3pCLEdBQUdpRCxVQUFVLG1CQUFtQkUsTUFBTSxDQUFDYyxFQUFFLHdCQUF3QixFQUNqRWxGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFDLE1BQU07TUFDVnhDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUNEa0UsS0FBSyxDQUFFZSxDQUFDLElBQUs7TUFDWjFDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO01BQ3ZCLE9BQU9pRixDQUFDO0lBQ1YsQ0FBQyxDQUFDO0VBQ04sQ0FBQztBQUFBO0FBRUksTUFBTWdCLGlCQUFpQixHQUM1QkMsS0FBQTtFQUFBLElBQUM7SUFBRWYsT0FBTztJQUFFM0IsSUFBSSxHQUFHcEQsd0RBQVU7SUFBRXFELE9BQU8sR0FBR3BELG9FQUFzQkE7RUFBQyxDQUFDLEdBQUE2RixLQUFBO0VBQUEsT0FDakUsT0FBTzNELFFBQVEsRUFBRXFCLFFBQVEsRUFBQXVDLEtBQUEsS0FBcUI7SUFBQSxJQUFuQjtNQUFFckM7SUFBVyxDQUFDLEdBQUFxQyxLQUFBO0lBQ3ZDNUQsUUFBUSxDQUFDdEMsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTWdFLFdBQVcsR0FBRyxNQUFNOUQsaUVBQW9CLENBQUMsQ0FBQyxDQUFDK0QsS0FBSyxDQUFDLE1BQ3JEQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUNqQixDQUFDO0lBRUQsTUFBTUMsTUFBTSxHQUFHO01BQ2JDLFlBQVksRUFBRUwsV0FBVztNQUN6QjhCLE1BQU0sRUFDSixtSEFBbUg7TUFDckh4QixLQUFLLEVBQUUsS0FBSztNQUNaQyxTQUFTLEVBQUUscUNBQXFDO01BQ2hEd0IsTUFBTSxFQUNKLHlFQUF5RTtNQUMzRXhDLElBQUk7TUFDSmlCLFFBQVEsRUFBRWhCO0lBQ1osQ0FBQztJQUNELE9BQU81RCx5RkFBVSxDQUNmLElBQUksRUFDSkUsMkZBQVksQ0FBQ21CLG9CQUFvQixDQUFDLEVBQ2xDLEdBQUc0QyxVQUFVLDhCQUE4QnFCLE9BQU8sVUFBVSxFQUM1RHZGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFFQyxPQUFPLElBQUs7TUFDakJ6QyxRQUFRLENBQUN2QywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QixPQUFPZ0YsT0FBTztJQUNoQixDQUFDLENBQUMsQ0FDRGQsS0FBSyxDQUFFZSxDQUFDLElBQUs7TUFDWjFDLFFBQVEsQ0FBQ3ZDLDBGQUFXLENBQUMsQ0FBQyxDQUFDO01BQ3ZCdUMsUUFBUSxDQUFDeEMsMkZBQVksQ0FBQ29CLDBCQUEwQixDQUFDLENBQUM7TUFDbEQsT0FBTzhELENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNbUIsa0JBQWtCLEdBQzVCQyxNQUFNLElBQ1AsT0FBTzlELFFBQVEsRUFBQStELEtBQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFeEM7RUFBVyxDQUFDLEdBQUF3QyxLQUFBO0VBQzdCLE1BQU1yQyxXQUFXLEdBQUcsTUFBTTlELGlFQUFvQixDQUFDLENBQUMsQ0FBQytELEtBQUssQ0FBQyxNQUNyREMsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FDakIsQ0FBQztFQUVELE1BQU07SUFBRW1DO0VBQVEsQ0FBQyxHQUFHRixNQUFNO0VBRTFCOUQsUUFBUSxDQUFDdEMsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTWtGLE9BQU8sR0FBR2tCLE1BQU0sQ0FBQzlCLEtBQUssR0FBRzhCLE1BQU0sQ0FBQzlCLEtBQUssQ0FBQ08sRUFBRSxHQUFHdUIsTUFBTSxDQUFDRyxRQUFRO0VBRWhFLE1BQU1uQyxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFTDtFQUNoQixDQUFDO0VBRUQsT0FBTy9ELHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDa0IsbUJBQW1CLENBQUMsRUFDakMsR0FBRzZDLFVBQVUsOEJBQThCcUIsT0FBTyxZQUFZa0IsTUFBTSxDQUFDdkIsRUFBRSxvQkFBb0IsRUFDM0Y7SUFBRXlCO0VBQVEsQ0FBQyxFQUNYM0csMkZBQ0YsQ0FBQyxDQUFDeUUsTUFBTSxDQUFDLENBQUM5QixRQUFRLENBQUMsQ0FDaEJ3QyxJQUFJLENBQUMsTUFBTTtJQUNWeEMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQ0RrRSxLQUFLLENBQUVlLENBQUMsSUFBSztJQUNaMUMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBT2lGLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUksTUFBTXdCLFlBQVksR0FDdkJDLEtBQUE7RUFBQSxJQUFDO0lBQUVMO0VBQU8sQ0FBQyxHQUFBSyxLQUFBO0VBQUEsT0FDWCxPQUFPbkUsUUFBUSxFQUFFcUIsUUFBUSxFQUFBK0MsTUFBQSxLQUFxQjtJQUFBLElBQW5CO01BQUU3QztJQUFXLENBQUMsR0FBQTZDLE1BQUE7SUFDdkMsTUFBTTFDLFdBQVcsR0FBRyxNQUFNOUQsaUVBQW9CLENBQUMsQ0FBQyxDQUFDK0QsS0FBSyxDQUFDLE1BQ3JEQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUNqQixDQUFDO0lBRUQ3QixRQUFRLENBQUN0QywyRkFBWSxDQUFDLENBQUMsQ0FBQztJQUV4QixNQUFNO01BQ0oyRyxVQUFVLEVBQUU7UUFBRUMsWUFBWSxFQUFFQztNQUFVLENBQUM7TUFDdkNDLFdBQVcsRUFBRTtRQUFFRixZQUFZLEVBQUVHO01BQVc7SUFDMUMsQ0FBQyxHQUFHcEQsUUFBUSxDQUFDLENBQUM7SUFFZCxNQUFNdUIsT0FBTyxHQUFHa0IsTUFBTSxDQUFDOUIsS0FBSyxHQUFHOEIsTUFBTSxDQUFDOUIsS0FBSyxDQUFDTyxFQUFFLEdBQUd1QixNQUFNLENBQUNHLFFBQVE7SUFFaEUsTUFBTW5DLE1BQU0sR0FBRztNQUNiQyxZQUFZLEVBQUVMO0lBQ2hCLENBQUM7SUFFRCxPQUFPbkUsNEZBQWEsQ0FDbEIsSUFBSSxFQUNKQywyRkFBWSxDQUFDaUIsYUFBYSxDQUFDLEVBQzNCLEdBQUc4QyxVQUFVLDhCQUE4QnFCLE9BQU8sWUFBWWtCLE1BQU0sQ0FBQ3ZCLEVBQUUsU0FBUyxFQUNoRixDQUFDLENBQUMsRUFDRmxGLDJGQUNGLENBQUMsQ0FBQ3lFLE1BQU0sQ0FBQyxDQUFDOUIsUUFBUSxDQUFDLENBQ2hCd0MsSUFBSSxDQUFFQyxPQUFPLElBQUs7TUFDakJ6QyxRQUFRLENBQUN2QywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUV2QixJQUFJcUcsTUFBTSxDQUFDRyxRQUFRLEVBQUU7UUFDbkJqRSxRQUFRLENBQUNlLGFBQWEsQ0FBQztVQUFFRSxJQUFJLEVBQUVzRDtRQUFVLENBQUMsQ0FBQyxDQUFDO01BQzlDLENBQUMsTUFBTTtRQUNMdkUsUUFBUSxDQUFDbUQsY0FBYyxDQUFDO1VBQUVsQyxJQUFJLEVBQUV3RDtRQUFXLENBQUMsQ0FBQyxDQUFDO01BQ2hEO01BQ0EsT0FBT2hDLE9BQU87SUFDaEIsQ0FBQyxDQUFDLENBQ0RkLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO01BQ1oxQyxRQUFRLENBQUN2QywwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QixNQUFNaUYsQ0FBQztJQUNULENBQUMsQ0FBQztFQUNOLENBQUM7QUFBQTs7QUFFSDtBQUNPLE1BQU1nQyxTQUFTLEdBQUlqRCxNQUFNLElBQUssTUFBT3pCLFFBQVEsSUFDbERBLFFBQVEsQ0FBQ3hDLDJGQUFZLENBQUNtQyxVQUFVLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDO0FBRXJDLE1BQU1rRCxpQkFBaUIsR0FDNUJBLENBQUEsS0FDQSxPQUFPM0UsUUFBUSxFQUFFcUIsUUFBUSxFQUFBdUQsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVyRDtFQUFXLENBQUMsR0FBQXFELE1BQUE7RUFDdkMsTUFBTTtJQUNKcEQsV0FBVyxFQUFFO01BQ1hDLE1BQU07TUFDTnFCLElBQUksRUFBRTtRQUFFUztNQUFZO0lBQ3RCO0VBQ0YsQ0FBQyxHQUFHbEMsUUFBUSxDQUFDLENBQUM7RUFFZCxNQUFNSyxXQUFXLEdBQUcsTUFBTTlELGlFQUFvQixDQUFDLENBQUMsQ0FBQytELEtBQUssQ0FBQyxNQUNyREMsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FDakIsQ0FBQztFQUVELE1BQU1DLE1BQU0sR0FBRztJQUNiYixJQUFJLEVBQUUsQ0FBQztJQUNQaUIsUUFBUSxFQUFFLEVBQUU7SUFDWnNCLE1BQU0sRUFBRSwyQ0FBMkM7SUFDbkR6QixZQUFZLEVBQUVMLFdBQVc7SUFDekIsVUFBVSxFQUFFO0VBQ2QsQ0FBQztFQUVELE1BQU1tRCxRQUFRLEdBQUcsR0FBR3RELFVBQVUsbUJBQW1CRSxNQUFNLENBQUNjLEVBQUUsY0FBY2dCLFdBQVcsQ0FBQ3VCLFdBQVcsMEJBQTBCO0VBRXpILE9BQU94SCx5RkFBVSxDQUNmLElBQUksRUFDSkUsMkZBQVksQ0FBQ3VCLHVCQUF1QixDQUFDLEVBQ3JDOEYsUUFBUSxFQUNSeEgsMkZBQ0YsQ0FBQyxDQUFDeUUsTUFBTSxDQUFDLENBQUM5QixRQUFRLENBQUMsQ0FBQ3dDLElBQUksQ0FBQyxNQUFNO0lBQzdCeEMsUUFBUSxDQUFDdkMsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hXcUM7QUFDTDtBQUNLO0FBQ087QUFDckI7QUFDc0M7QUFDZ0I7QUFDcEI7QUFDVjtBQUNGO0FBQ1U7QUFDWDtBQUFBO0FBRWhDLFNBQVN3SSxlQUFlQSxDQUFBakYsSUFBQSxFQUF3QjtFQUFBLElBQXZCO0lBQUVrRixRQUFRO0lBQUVDO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUMzRCxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNa0IsR0FBRyxHQUFHakIsNENBQUssQ0FBQyxDQUFDO0VBQ25CLE1BQU0sQ0FBQ2tCLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUd2QiwrQ0FBUSxDQUFDcUIsR0FBRyxDQUFDO0VBQy9DLE1BQU1HLFlBQVksR0FBSUMsR0FBRyxJQUFLO0lBQzVCRixZQUFZLENBQUNFLEdBQUcsQ0FBQztJQUNqQixNQUFNQyxJQUFJLEdBQUcsSUFBSUMsSUFBSSxDQUFDRixHQUFHLENBQUNHLEVBQUUsQ0FBQztJQUM3QixNQUFNO01BQUVsRyxLQUFLO01BQUVDO0lBQU0sQ0FBQyxHQUFHOEUsb0VBQTJCLENBQUNpQixJQUFJLENBQUM7SUFDMURSLFFBQVEsQ0FBQztNQUNQM0YsSUFBSSxFQUFFTCxxREFBZTtNQUNyQk8sSUFBSSxFQUFFLFNBQVM7TUFDZmlHLElBQUk7TUFDSmhHLEtBQUs7TUFDTEM7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDO0VBQ0QsTUFBTWtHLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCVixPQUFPLENBQUMsQ0FBQztJQUNUSSxZQUFZLENBQUNGLEdBQUcsQ0FBQztFQUNuQixDQUFDO0VBQ0Qsb0JBQ0VQLHdEQUFBLENBQUFFLHdEQUFBO0lBQUFjLFFBQUEsZ0JBQ0VsQix1REFBQTtNQUFLbUIsU0FBUyxFQUFFckIsaUVBQXVCO01BQUFvQixRQUFBLEVBQUVWLENBQUMsQ0FBQyxxQkFBcUI7SUFBQyxDQUFNLENBQUMsZUFDeEVOLHdEQUFBLENBQUNaLDREQUFLO01BQ0orQixVQUFVLEVBQUMsUUFBUTtNQUNuQm5HLFNBQVMsRUFBQyxLQUFLO01BQ2ZvRyxFQUFFLEVBQUU7UUFBRUMsRUFBRSxFQUFFLENBQUM7UUFBRUMsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQkwsU0FBUyxFQUFFckIscUVBQTJCO01BQUFvQixRQUFBLGdCQUV0Q2xCLHVEQUFBLENBQUNKLGtFQUFTO1FBQ1I4QixRQUFRLEVBQUMsT0FBTztRQUNoQlAsU0FBUyxFQUFFckIsaUVBQXVCO1FBQ2xDOEIsT0FBTyxFQUFFWDtNQUFjLENBQ3hCLENBQUMsZUFDRmpCLHVEQUFBLENBQUNOLDBGQUFvQjtRQUFDbUMsV0FBVyxFQUFFcEMsMEVBQWE7UUFBQXlCLFFBQUEsZUFDOUNsQix1REFBQSxDQUFDTCxzRUFBVTtVQUNUd0IsU0FBUyxFQUFFckIsaUVBQXVCO1VBQ2xDaUMsUUFBUSxFQUFFbkIsWUFBYTtVQUN2QjVGLEtBQUssRUFBRTBGO1FBQVUsQ0FDbEI7TUFBQyxDQUNrQixDQUFDO0lBQUEsQ0FDbEIsQ0FBQztFQUFBLENBQ1IsQ0FBQztBQUVQO0FBRUFMLGVBQWUsQ0FBQzJCLFNBQVMsR0FBRztFQUMxQjFCLFFBQVEsRUFBRWpCLHdEQUFjO0VBQ3hCa0IsT0FBTyxFQUFFbEIsd0RBQWM0QztBQUN6QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5RDBEO0FBQ3hCO0FBQ0s7QUFDb0I7QUFDeEI7QUFDVztBQUNKO0FBQ0k7QUFBQTtBQUUvQyxTQUFTSyxNQUFNQSxDQUFBbEgsSUFBQSxFQUF3QjtFQUFBLElBQXZCO0lBQUVrRixRQUFRO0lBQUVDO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUNuQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUNnRCxjQUFjLEVBQUVDLGlCQUFpQixDQUFDLEdBQUdwRCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMzRCxNQUFNLENBQUNxRCxjQUFjLEVBQUVDLGlCQUFpQixDQUFDLEdBQUd0RCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMzRCxNQUFNLENBQUN1RCxlQUFlLEVBQUVDLGtCQUFrQixDQUFDLEdBQUd4RCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUM3RCxNQUFNeUQsU0FBUyxHQUFHWCw2Q0FBTSxDQUFDLElBQUksQ0FBQztFQUM5QixNQUFNWSx3QkFBd0IsR0FBSUMsS0FBSyxJQUFLO0lBQzFDLElBQUlGLFNBQVMsQ0FBQ0csT0FBTyxJQUFJLENBQUNILFNBQVMsQ0FBQ0csT0FBTyxDQUFDQyxRQUFRLENBQUNGLEtBQUssQ0FBQ0csTUFBTSxDQUFDLEVBQUU7TUFDbEUsSUFBSVgsY0FBYyxFQUFFO1FBQ2xCQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDeEJFLGlCQUFpQixDQUFDLEtBQUssQ0FBQztNQUMxQjtJQUNGO0VBQ0YsQ0FBQztFQUNEUCxnREFBUyxDQUFDLE1BQU07SUFDZGdCLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsT0FBTyxFQUFFTix3QkFBd0IsRUFBRSxLQUFLLENBQUM7SUFDbkUsT0FBTyxNQUFNO01BQ1hLLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsT0FBTyxFQUFFUCx3QkFBd0IsRUFBRSxLQUFLLENBQUM7SUFDeEUsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDUCxjQUFjLENBQUMsQ0FBQztFQUVwQixNQUFNZSxNQUFNLEdBQUdBLENBQUEsS0FBTTtJQUNuQmQsaUJBQWlCLENBQUMsQ0FBQ0QsY0FBYyxDQUFDO0lBQ2xDRyxpQkFBaUIsQ0FBQyxDQUFDRCxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUNELG9CQUNFdkMsdURBQUEsQ0FBQ21DLDhDQUFHO0lBQUNsQixTQUFTLEVBQUVyQixnRUFBdUI7SUFBQzBELEdBQUcsRUFBRVgsU0FBVTtJQUFBM0IsUUFBQSxnQkFDckRoQix1REFBQSxDQUFDWiw0REFBSztNQUNKK0IsVUFBVSxFQUFDLFFBQVE7TUFDbkJuRyxTQUFTLEVBQUMsS0FBSztNQUNmb0csRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDckJJLE9BQU8sRUFBRTBCLE1BQU87TUFBQXBDLFFBQUEsZ0JBRWhCbEIsc0RBQUEsQ0FBQ29DLHVFQUFjO1FBQUNWLFFBQVEsRUFBQyxPQUFPO1FBQUNQLFNBQVMsRUFBRXJCLDJEQUFpQjJEO01BQUMsQ0FBRSxDQUFDLEVBRWhFZCxlQUFlLGlCQUFJM0Msc0RBQUE7UUFBS21CLFNBQVMsRUFBRXJCLGdFQUF1QjtRQUFBb0IsUUFBQSxFQUFDO01BQUMsQ0FBSyxDQUFDLGVBQ25FbEIsc0RBQUE7UUFBTW1CLFNBQVMsRUFBRXJCLDREQUFtQjtRQUFBb0IsUUFBQSxFQUFFVixDQUFDLENBQUMsZUFBZTtNQUFDLENBQU8sQ0FBQztJQUFBLENBQzNELENBQUMsZUFDUlIsc0RBQUEsQ0FBQ3FDLDhDQUFHO01BQ0ZsQixTQUFTLEVBQUUsR0FBR3JCLG9FQUEwQixJQUFJQSwwREFBZ0IsSUFDMUR5QyxjQUFjLEdBQUd6QywrREFBcUIsR0FBRyxFQUFFLEVBQzFDO01BQUFvQixRQUFBLGVBRUhsQixzREFBQSxDQUFDSyxtREFBZTtRQUNkRSxPQUFPLEVBQUVBLENBQUEsS0FBTTtVQUNiQSxPQUFPLENBQUMsQ0FBQztVQUNUcUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1VBQ3pCVSxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUU7UUFDRmhELFFBQVEsRUFBRzVGLE1BQU0sSUFBSztVQUNwQjRGLFFBQVEsQ0FBQzVGLE1BQU0sQ0FBQztVQUNoQmtJLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUMxQjtNQUFFLENBQ0g7SUFBQyxDQUNDLENBQUM7RUFBQSxDQUNILENBQUM7QUFFVjtBQUVBTixNQUFNLENBQUNOLFNBQVMsR0FBRztFQUNqQjFCLFFBQVEsRUFBRWpCLHdEQUFjNEM7QUFDMUIsQ0FBQztBQUVELGlFQUFlSyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4RW1CO0FBQ0w7QUFDVztBQUNNO0FBQ0Y7QUFDRjtBQUNaO0FBQ1c7QUFDUztBQUFBO0FBRXhELE1BQU0yQixlQUFlLEdBQUdILDREQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTztFQUMzQ0ksUUFBUSxFQUFFLFVBQVU7RUFDcEJDLFdBQVcsRUFBRSxHQUFHO0VBQ2hCQyxVQUFVLEVBQUUsR0FBRztFQUNmQyxLQUFLLEVBQUUsTUFBTTtFQUNiQyxPQUFPLEVBQUU7QUFDWCxDQUFDLENBQUMsQ0FBQztBQUNILE1BQU1DLGlCQUFpQixHQUFHVCw0REFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87RUFDN0NVLE1BQU0sRUFBRSxNQUFNO0VBQ2ROLFFBQVEsRUFBRSxVQUFVO0VBQ3BCSSxPQUFPLEVBQUUsTUFBTTtFQUNmakQsVUFBVSxFQUFFLFFBQVE7RUFDcEJvRCxjQUFjLEVBQUU7QUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNQyxlQUFlLEdBQUdaLDREQUFNLENBQUNFLGdFQUFTLENBQUMsQ0FBQyxPQUFPO0VBQy9DVyxLQUFLLEVBQUUsU0FBUztFQUNoQkMsWUFBWSxFQUFFLCtCQUErQjtFQUM3Q0MsV0FBVyxFQUFFLE1BQU07RUFDbkJDLFlBQVksRUFBRSxNQUFNO0VBQ3BCcEQsUUFBUSxFQUFFO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNcUQsZ0JBQWdCLEdBQUdqQiw0REFBTSxDQUFDbEUsa0VBQVMsQ0FBQyxDQUFDLE9BQU87RUFDaERvRixPQUFPLEVBQUUsS0FBSztFQUNkdEQsUUFBUSxFQUFFLE9BQU87RUFDakI4QyxNQUFNLEVBQUUsTUFBTTtFQUNkTixRQUFRLEVBQUUsVUFBVTtFQUNwQmUsR0FBRyxFQUFFLEdBQUc7RUFDUkMsS0FBSyxFQUFFLEdBQUc7RUFDVlosT0FBTyxFQUFFLE1BQU07RUFDZmpELFVBQVUsRUFBRSxRQUFRO0VBQ3BCb0QsY0FBYyxFQUFFLFFBQVE7RUFDeEJVLE1BQU0sRUFBRSxTQUFTO0VBQ2pCQyxNQUFNLEVBQUU7QUFDVixDQUFDLENBQUMsQ0FBQztBQUVILFNBQVNDLE1BQU1BLENBQUFqSyxJQUFBLEVBQXdCO0VBQUEsSUFBdkI7SUFBRWtLLFFBQVE7SUFBRS9FO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUNuQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUNnRyxTQUFTLEVBQUVDLFlBQVksQ0FBQyxHQUFHcEcsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDakQsTUFBTSxDQUFDcUcsV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBR3RHLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQ2xELE1BQU11RyxTQUFTLEdBQUk1QyxLQUFLLElBQUs7SUFDM0IsTUFBTTtNQUNKNkMsR0FBRztNQUNIQyxXQUFXLEVBQUU7UUFDWDNDLE1BQU0sRUFBRTtVQUFFbEk7UUFBTTtNQUNsQjtJQUNGLENBQUMsR0FBRytILEtBQUs7SUFDVCxJQUFJNkMsR0FBRyxLQUFLLE9BQU8sRUFBRTtNQUNuQk4sUUFBUSxDQUFDO1FBQ1B0SyxLQUFLO1FBQ0xILElBQUksRUFBRSxRQUFRO1FBQ2RGLElBQUksRUFBRUosNkRBQXVCQTtNQUMvQixDQUFDLENBQUM7TUFDRmlMLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0QsTUFBTU0sV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJKLGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDbEJGLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkJqRixPQUFPLENBQUMsQ0FBQztFQUNYLENBQUM7RUFDRCxvQkFDRVAsc0RBQUEsQ0FBQ3FDLDhDQUFHO0lBQUFuQixRQUFBLGVBQ0ZoQix1REFBQSxDQUFDK0QsZUFBZTtNQUFBL0MsUUFBQSxHQUNicUUsU0FBUyxpQkFDUnZGLHNEQUFBLENBQUMrRSxnQkFBZ0I7UUFBQ25ELE9BQU8sRUFBRWtFLFdBQVk7UUFBQTVFLFFBQUEsZUFDckNsQixzREFBQSxDQUFDSixrRUFBUyxJQUFFO01BQUMsQ0FDRyxDQUNuQixlQUNESSxzREFBQSxDQUFDdUUsaUJBQWlCO1FBQUFyRCxRQUFBLGVBQ2hCbEIsc0RBQUEsQ0FBQytELG1FQUFVLElBQUU7TUFBQyxDQUNHLENBQUMsZUFDcEIvRCxzREFBQSxDQUFDMEUsZUFBZTtRQUNkcUIsV0FBVyxFQUFFdkYsQ0FBQyxDQUFDLDJCQUEyQixDQUFFO1FBQzVDd0YsVUFBVSxFQUFFO1VBQUUsWUFBWSxFQUFFO1FBQVMsQ0FBRTtRQUN2Q2hMLEtBQUssRUFBRXlLLFdBQVk7UUFDbkIxRCxRQUFRLEVBQUdqRixDQUFDLElBQUs0SSxjQUFjLENBQUM1SSxDQUFDLENBQUNvRyxNQUFNLENBQUNsSSxLQUFLLENBQUU7UUFDaEQySyxTQUFTLEVBQUVBO01BQVUsQ0FDdEIsQ0FBQztJQUFBLENBQ2E7RUFBQyxDQUNmLENBQUM7QUFFVjtBQUVBTixNQUFNLENBQUNyRCxTQUFTLEdBQUc7RUFDakJzRCxRQUFRLEVBQUVqRyx3REFBYztFQUN4QmtCLE9BQU8sRUFBRWxCLHdEQUFjNEM7QUFDekIsQ0FBQztBQUVELGlFQUFlb0QsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEdzQztBQUNuQjtBQUNJO0FBQ29CO0FBQ2pCO0FBQ0E7QUFBQTtBQUUvQyxTQUFTYyxJQUFJQSxDQUFBL0ssSUFBQSxFQUFhO0VBQUEsSUFBWjtJQUFFZ0w7RUFBTyxDQUFDLEdBQUFoTCxJQUFBO0VBQ3RCLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQzhHLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUdsSCwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMvQyxNQUFNbUgsT0FBTyxHQUFHckUsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDNUIsTUFBTXNFLHNCQUFzQixHQUFJekQsS0FBSyxJQUFLO0lBQ3hDLElBQUl3RCxPQUFPLENBQUN2RCxPQUFPLElBQUksQ0FBQ3VELE9BQU8sQ0FBQ3ZELE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNHLE1BQU0sQ0FBQyxFQUFFO01BQzlEb0QsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNwQjtFQUNGLENBQUM7RUFDRG5FLGdEQUFTLENBQUMsTUFBTTtJQUNkZ0IsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVvRCxzQkFBc0IsRUFBRSxLQUFLLENBQUM7SUFDakUsT0FBTyxNQUFNO01BQ1hyRCxRQUFRLENBQUNFLG1CQUFtQixDQUFDLE9BQU8sRUFBRW1ELHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUN0RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNILFFBQVEsQ0FBQyxDQUFDO0VBRWQsTUFBTS9DLE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0lBQ25CZ0QsV0FBVyxDQUFDLENBQUNELFFBQVEsQ0FBQztFQUN4QixDQUFDO0VBQ0Qsb0JBQ0VuRyx1REFBQSxDQUFDbUMsOENBQUc7SUFBQ2xCLFNBQVMsRUFBRXJCLDhEQUFxQjtJQUFDOEIsT0FBTyxFQUFFMEIsTUFBTztJQUFBcEMsUUFBQSxnQkFDcERoQix1REFBQSxDQUFDWiw0REFBSztNQUNKa0UsR0FBRyxFQUFFK0MsT0FBUTtNQUNibEYsVUFBVSxFQUFDLFFBQVE7TUFDbkJuRyxTQUFTLEVBQUMsS0FBSztNQUNmb0csRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQU4sUUFBQSxnQkFFckJsQixzREFBQSxDQUFDa0cseUVBQWdCO1FBQUN4RSxRQUFRLEVBQUMsT0FBTztRQUFDUCxTQUFTLEVBQUVyQix5REFBZTRHO01BQUMsQ0FBRSxDQUFDLGVBQ2pFMUcsc0RBQUE7UUFBTW1CLFNBQVMsRUFBRXJCLDBEQUFpQjtRQUFBb0IsUUFBQSxFQUFFVixDQUFDLENBQUMsV0FBVztNQUFDLENBQU8sQ0FBQztJQUFBLENBQ3JELENBQUMsRUFDUDZGLFFBQVEsaUJBQ1BuRyx1REFBQSxDQUFDbUMsOENBQUc7TUFBQ2xCLFNBQVMsRUFBRSxHQUFHckIsa0VBQXdCLElBQUlBLDBEQUFnQixFQUFHO01BQUFvQixRQUFBLGdCQUNoRWxCLHNEQUFBLENBQUNpRyxpREFBTTtRQUFDOUUsU0FBUyxFQUFFckIsc0RBQWE7UUFBQzhCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNd0UsTUFBTSxDQUFDLE1BQU0sQ0FBRTtRQUFBbEYsUUFBQSxFQUM1RFYsQ0FBQyxDQUFDLGdCQUFnQjtNQUFDLENBQ2QsQ0FBQyxlQUNUUixzREFBQSxDQUFDaUcsaURBQU07UUFBQzlFLFNBQVMsRUFBRXJCLHNEQUFhO1FBQUM4QixPQUFPLEVBQUVBLENBQUEsS0FBTXdFLE1BQU0sQ0FBQyxLQUFLLENBQUU7UUFBQWxGLFFBQUEsRUFDM0RWLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUNkLENBQUM7SUFBQSxDQUNOLENBQ047RUFBQSxDQUNFLENBQUM7QUFFVjtBQUVBLGlFQUFlMkYsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRE87QUFDUztBQUNFO0FBQ1A7QUFDSjtBQUNJO0FBQ2lCO0FBQUE7QUFFL0MsU0FBU1ksZ0JBQWdCQSxDQUFBM0wsSUFBQSxFQUEwQztFQUFBLElBQXpDO0lBQUVrRixRQUFRO0lBQUU4RixNQUFNO0lBQUVkLFFBQVE7SUFBRS9FO0VBQVEsQ0FBQyxHQUFBbkYsSUFBQTtFQUMvRCxvQkFDRThFLHVEQUFBLENBQUM0RywrQ0FBSTtJQUFDbEQsU0FBUztJQUFDb0QsT0FBTyxFQUFDLFVBQVU7SUFBQzNGLFVBQVUsRUFBQyxRQUFRO0lBQUFILFFBQUEsZ0JBQ3BEaEIsdURBQUEsQ0FBQzRHLCtDQUFJO01BQ0hHLElBQUk7TUFDSkMsRUFBRSxFQUFFLENBQUU7TUFDTnRELFNBQVM7TUFDVG9CLE9BQU8sRUFBRSxDQUFFO01BQ1htQyxHQUFHLEVBQUUsQ0FBRTtNQUNQaEcsU0FBUyxFQUFFckIsb0VBQTJCO01BQ3RDd0IsRUFBRSxFQUFFO1FBQUVDLEVBQUUsRUFBRSxDQUFDO1FBQUVDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQU4sUUFBQSxnQkFFckJsQixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ0csSUFBSTtRQUFBL0YsUUFBQSxlQUNSbEIsc0RBQUEsQ0FBQ3NDLCtDQUFNO1VBQUNoQyxRQUFRLEVBQUVBLFFBQVM7VUFBQ0MsT0FBTyxFQUFFQTtRQUFRLENBQUU7TUFBQyxDQUM1QyxDQUFDLGVBQ1BQLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDRyxJQUFJO1FBQUEvRixRQUFBLGVBQ1JsQixzREFBQSxDQUFDbUcsNkNBQUk7VUFBQ0MsTUFBTSxFQUFFQTtRQUFPLENBQUU7TUFBQyxDQUNwQixDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1BwRyxzREFBQSxDQUFDOEcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDQyxFQUFFLEVBQUUsQ0FBRTtNQUFDdEQsU0FBUztNQUFDYSxjQUFjLEVBQUMsVUFBVTtNQUFBdkQsUUFBQSxlQUNuRGxCLHNEQUFBLENBQUNxRiwrQ0FBTTtRQUFDQyxRQUFRLEVBQUVBLFFBQVM7UUFBQy9FLE9BQU8sRUFBRUE7TUFBUSxDQUFFO0lBQUMsQ0FDNUMsQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVYO0FBRUF3RyxnQkFBZ0IsQ0FBQy9FLFNBQVMsR0FBRztFQUMzQjFCLFFBQVEsRUFBRWpCLHdEQUFjO0VBQ3hCK0csTUFBTSxFQUFFL0csd0RBQWM7RUFDdEJpRyxRQUFRLEVBQUVqRyx3REFBYztFQUN4QmtCLE9BQU8sRUFBRWxCLHdEQUFjNEM7QUFDekIsQ0FBQztBQUVELGlFQUFlOEUsZ0JBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekNvQjtBQUNrQjtBQUN0QjtBQUNYO0FBQ3lCO0FBQ1g7QUFDWjtBQUNZO0FBQ3lCO0FBQzVCO0FBQUE7QUFFL0MsU0FBU1ksZUFBZUEsQ0FBQSxFQUFHO0VBQ3pCLE1BQU07SUFBRW5IO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1uRixRQUFRLEdBQUdpTix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKeEwsTUFBTTtJQUNOcUIsSUFBSTtJQUNKMEssWUFBWTtJQUNaQyxtQkFBbUI7SUFDbkJDLGVBQWU7SUFDZkM7RUFDRixDQUFDLEdBQUdULHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDcE0sV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFMkwscURBQVksQ0FBQztFQUNqRSxNQUFNLENBQUNVLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUc5SSwrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUM1QyxNQUFNLENBQUMrSSxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHaEosK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDbkQsTUFBTSxDQUFDMUUsTUFBTSxFQUFFMk4sU0FBUyxDQUFDLEdBQUdqSiwrQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3hDLE1BQU0sQ0FBQzdELElBQUksRUFBRStNLE9BQU8sQ0FBQyxHQUFHbEosK0NBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUVwQyxNQUFNbUIsT0FBTyxHQUFHQSxDQUFBLEtBQU07SUFDcEIrSCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2JELGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDcEJoTyxRQUFRLENBQUNDLHFEQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUM7RUFFRCxNQUFNa08sU0FBUyxHQUFHLE1BQUFBLENBQUEsS0FBWTtJQUM1Qm5PLFFBQVEsQ0FDTmUsdURBQWEsQ0FBQztNQUNaRSxJQUFJLEVBQUV3TSxtQkFBbUI7TUFDekJ2TSxPQUFPLEVBQUV3TSxlQUFlO01BQ3hCdE0sSUFBSSxFQUFFMk0sVUFBVTtNQUNoQnpOLE1BQU07TUFDTmE7SUFDRixDQUFDLENBQ0gsQ0FBQyxDQUFDcUIsSUFBSSxDQUFFNEwsR0FBRyxJQUFLO01BQ2QsSUFDRUEsR0FBRyxDQUFDQyxRQUFRLEVBQUVDLElBQUksRUFBRWpNLE1BQU0sR0FBR3FMLGVBQWUsSUFDNUNGLFlBQVksQ0FBQ25MLE1BQU0sS0FBS3NMLFlBQVksRUFFcENHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVEL0YsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RvRyxTQUFTLENBQUMsQ0FBQztFQUNiLENBQUMsRUFBRSxDQUFDN04sTUFBTSxFQUFFYSxJQUFJLEVBQUU0TSxVQUFVLENBQUMsQ0FBQztFQUU5QmhHLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUlqRixJQUFJLElBQUlyQixNQUFNLEVBQUU7TUFDbEJ6QixRQUFRLENBQUMyRSwyREFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDL0I7RUFDRixDQUFDLEVBQUUsQ0FBQzdCLElBQUksRUFBRXJCLE1BQU0sQ0FBQyxDQUFDO0VBRWxCLE1BQU15RSxRQUFRLEdBQUk1RixNQUFNLElBQUs7SUFDM0I0TixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWEQsU0FBUyxDQUFDM04sTUFBTSxDQUFDO0VBQ25CLENBQUM7RUFDRCxNQUFNMEwsTUFBTSxHQUFJbEwsU0FBUyxJQUFLO0lBQzVCbU4sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2JDLE9BQU8sQ0FBQztNQUFFcE4sU0FBUztNQUFFTCxJQUFJLEVBQUU7SUFBVSxDQUFDLENBQUM7RUFDekMsQ0FBQztFQUVELG9CQUNFcUYsd0RBQUEsQ0FBQUUsd0RBQUE7SUFBQWMsUUFBQSxnQkFDRWxCLHVEQUFBLENBQUMrRyx5REFBZ0I7TUFDZnpHLFFBQVEsRUFBRUEsUUFBUztNQUNuQjhGLE1BQU0sRUFBRUEsTUFBTztNQUNmZCxRQUFRLEVBQUVoRixRQUFTO01BQ25CQyxPQUFPLEVBQUVBO0lBQVEsQ0FDbEIsQ0FBQyxlQUNGTCx3REFBQSxDQUFDbUMsOENBQUc7TUFDRmxCLFNBQVMsRUFBRXJCLDZEQUFvQjtNQUMvQndCLEVBQUUsRUFBRTtRQUFFMEQsT0FBTyxFQUFFO1VBQUVrQyxFQUFFLEVBQUUsQ0FBQztVQUFFMEIsRUFBRSxFQUFFLENBQUM7VUFBRUMsRUFBRSxFQUFFO1FBQUU7TUFBRSxDQUFFO01BQUEzSCxRQUFBLGdCQUV6Q2xCLHVEQUFBO1FBQUltQixTQUFTLEVBQUVyQixnRUFBdUI7UUFBQW9CLFFBQUEsRUFBRXJGLE1BQU0sRUFBRWhCO01BQUksQ0FBSyxDQUFDLGVBQzFEbUYsdURBQUE7UUFBSW1CLFNBQVMsRUFBRXJCLGdFQUF1QjtRQUFBb0IsUUFBQSxFQUNuQ3dHLDhEQUFzQixDQUFDN0wsTUFBTTtNQUFDLENBQzdCLENBQUM7SUFBQSxDQUNGLENBQUMsRUFDTCtMLFlBQVksQ0FBQ25MLE1BQU0sZ0JBQ2xCdUQsdURBQUEsQ0FBQ3dILHdFQUFjO01BQ2J1QixVQUFVLEVBQUVuQixZQUFZLENBQUNuTCxNQUFPO01BQ2hDakIsSUFBSSxFQUFFQSxDQUFBLEtBQU00TSxhQUFhLENBQUMsSUFBSSxDQUFFO01BQ2hDSCxPQUFPLEVBQUVBLE9BQVE7TUFDakJlLGVBQWUsRUFBRSxDQUFFO01BQUE5SCxRQUFBLEVBRWxCMEcsWUFBWSxFQUFFcUIsR0FBRyxDQUFFN00sS0FBSyxpQkFDdkI0RCx1REFBQSxDQUFDeUgsbURBQVU7UUFBZ0JyTCxLQUFLLEVBQUVBLEtBQU07UUFBQ1AsTUFBTSxFQUFFQTtNQUFPLEdBQXZDTyxLQUFLLENBQUNPLEVBQW1DLENBQzNEO0lBQUMsQ0FDWSxDQUFDLGdCQUVqQnFELHVEQUFBLENBQUNxQyw4Q0FBRztNQUFDbEIsU0FBUyxFQUFFckIsOERBQXFCO01BQUFvQixRQUFBLEVBQUVWLENBQUMsQ0FBQyxrQkFBa0I7SUFBQyxDQUFNLENBQ25FO0VBQUEsQ0FDRCxDQUFDO0FBRVA7QUFDQSxpRUFBZW1ILGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6R0o7QUFDUztBQUNZO0FBQ0w7QUFDRTtBQUN1QjtBQUNwQjtBQUFBO0FBRS9DLFNBQVMyQixpQkFBaUJBLENBQUFsTyxJQUFBLEVBQTZCO0VBQUEsSUFBNUI7SUFBRWdCLEtBQUs7SUFBRVAsTUFBTTtJQUFFME47RUFBUSxDQUFDLEdBQUFuTyxJQUFBO0VBQ25ELE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRWlLLGFBQWE7SUFBRUMsV0FBVztJQUFFQyxVQUFVO0lBQUVDLFdBQVc7SUFBRUM7RUFBYyxDQUFDLEdBQzFFUiw0REFBb0IsQ0FBQztJQUFFaE4sS0FBSztJQUFFUCxNQUFNO0lBQUUwTjtFQUFRLENBQUMsQ0FBQztFQUNsRCxNQUFNTSxPQUFPLEdBQUcsR0FBRztFQUVuQixvQkFDRTNKLHVEQUFBLENBQUNtQyw4Q0FBRztJQUFDbEIsU0FBUyxFQUFFckIsa0VBQXlCO0lBQUFvQixRQUFBLEdBQ3RDMEksYUFBYSxFQUFFbk4sTUFBTSxHQUFHLENBQUMsaUJBQ3hCdUQsc0RBQUEsQ0FBQUksdURBQUE7TUFBQWMsUUFBQSxFQUNHMEksYUFBYSxDQUFDWCxHQUFHLENBQUUvSyxNQUFNLElBQUs7UUFDN0IsTUFBTTZMLFdBQVcsR0FDZDdMLE1BQU0sQ0FBQzhMLEdBQUcsSUFBSTlMLE1BQU0sQ0FBQytMLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHTCxPQUFPLENBQUMsR0FBSUEsT0FBTztRQUU5RCxvQkFDRTNKLHVEQUFBLENBQUM0RywrQ0FBSTtVQUNIbEQsU0FBUztVQUVUdEMsRUFBRSxFQUFFO1lBQUVFLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFBQU4sUUFBQSxnQkFFZGxCLHNEQUFBLENBQUM4RywrQ0FBSTtZQUFDSSxFQUFFLEVBQUUsQ0FBRTtZQUFDRCxJQUFJO1lBQUEvRixRQUFBLGVBQ2ZoQix1REFBQTtjQUFBZ0IsUUFBQSxHQUFNLEdBQ0gsRUFBQ2hELE1BQU0sQ0FBQzhMLEdBQUcsRUFBQyxHQUFDLEVBQUM5TCxNQUFNLENBQUMrTCxXQUFXLENBQUNwUCxJQUFJO1lBQUEsQ0FDbEM7VUFBQyxDQUNILENBQUMsZUFDUG1GLHNEQUFBLENBQUM4RywrQ0FBSTtZQUFDSSxFQUFFLEVBQUUsQ0FBRTtZQUFDRCxJQUFJO1lBQUNrRCxLQUFLLEVBQUMsT0FBTztZQUFBakosUUFBQSxFQUM1Qm1JLHNEQUFjLENBQUNVLFdBQVcsRUFBRTtjQUFFSyxRQUFRLEVBQUVoTyxLQUFLLENBQUNnTztZQUFTLENBQUM7VUFBQyxDQUN0RCxDQUFDO1FBQUEsR0FWRixZQUFZbE0sTUFBTSxDQUFDK0wsV0FBVyxDQUFDSSxPQUFPLEVBV3ZDLENBQUM7TUFFWCxDQUFDO0lBQUMsQ0FDRixDQUNILEVBQ0FqTyxLQUFLLENBQUNrTyxlQUFlLEdBQUcsQ0FBQyxpQkFDeEJwSyx1REFBQSxDQUFDNEcsK0NBQUk7TUFBQ2xELFNBQVM7TUFBQ3RDLEVBQUUsRUFBRTtRQUFFRSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUFOLFFBQUEsZ0JBQzVCbEIsc0RBQUEsQ0FBQzhHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQS9GLFFBQUEsRUFDZFYsQ0FBQyxDQUFDLHlCQUF5QjtNQUFDLENBQ3pCLENBQUMsZUFDUE4sdURBQUEsQ0FBQzRHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2tELEtBQUssRUFBQyxPQUFPO1FBQUFqSixRQUFBLEdBQUMsR0FDN0IsRUFBQ3NJLGFBQWE7TUFBQSxDQUNYLENBQUM7SUFBQSxDQUNILENBQ1AsRUFDQXBOLEtBQUssQ0FBQ21PLFlBQVksR0FBRyxDQUFDLGlCQUNyQnJLLHVEQUFBLENBQUM0RywrQ0FBSTtNQUFDbEQsU0FBUztNQUFDdEMsRUFBRSxFQUFFO1FBQUVFLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQU4sUUFBQSxnQkFDNUJsQixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFBL0YsUUFBQSxFQUNkVixDQUFDLENBQUMscUJBQXFCO01BQUMsQ0FDckIsQ0FBQyxlQUNQUixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDa0QsS0FBSyxFQUFDLE9BQU87UUFBQWpKLFFBQUEsRUFDNUJ3STtNQUFVLENBQ1AsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBdE4sS0FBSyxDQUFDb08sTUFBTSxLQUFLLE1BQU0saUJBQ3RCdEssdURBQUEsQ0FBQzRHLCtDQUFJO01BQUNsRCxTQUFTO01BQUN0QyxFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBTixRQUFBLGdCQUM1QmxCLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUEvRixRQUFBLEVBQ2RWLENBQUMsQ0FBQywyQkFBMkI7TUFBQyxDQUMzQixDQUFDLGVBQ1BOLHVEQUFBLENBQUM0RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUNrRCxLQUFLLEVBQUMsT0FBTztRQUFBakosUUFBQSxHQUFDLEdBQzdCLEVBQUN5SSxXQUFXO01BQUEsQ0FDVCxDQUFDO0lBQUEsQ0FDSCxDQUNQLEVBQ0FGLFdBQVcsR0FBRyxDQUFDLGlCQUNkdkosdURBQUEsQ0FBQzRHLCtDQUFJO01BQUNsRCxTQUFTO01BQUN0QyxFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBTixRQUFBLGdCQUM1QmxCLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUEvRixRQUFBLEVBQ2RWLENBQUMsQ0FBQyx1QkFBdUI7TUFBQyxDQUN2QixDQUFDLGVBQ1BSLHNEQUFBLENBQUM4RywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUNrRCxLQUFLLEVBQUMsT0FBTztRQUFBakosUUFBQSxFQUM1QnVJO01BQVcsQ0FDUixDQUFDO0lBQUEsQ0FDSCxDQUNQLGVBQ0R6SixzREFBQSxDQUFDbUosOERBQU8sSUFBRSxDQUFDLGVBQ1hqSix1REFBQSxDQUFDNEcsK0NBQUk7TUFBQ2xELFNBQVM7TUFBQ3RDLEVBQUUsRUFBRTtRQUFFQyxFQUFFLEVBQUUsQ0FBQztRQUFFQyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUFOLFFBQUEsZ0JBQ25DbEIsc0RBQUEsQ0FBQzhHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQS9GLFFBQUEsRUFDZFYsQ0FBQyxDQUFDLHFCQUFxQjtNQUFDLENBQ3JCLENBQUMsZUFDUFIsc0RBQUEsQ0FBQzhHLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2tELEtBQUssRUFBQyxPQUFPO1FBQUFqSixRQUFBLEVBQzVCOUUsS0FBSyxDQUFDb08sTUFBTSxLQUFLLE1BQU0sR0FBRyxPQUFPLEdBQUdiO01BQVcsQ0FDNUMsQ0FBQztJQUFBLENBQ0gsQ0FBQztFQUFBLENBQ0osQ0FBQztBQUVWO0FBRUFMLGlCQUFpQixDQUFDdEgsU0FBUyxHQUFHO0VBQzVCNUYsS0FBSyxFQUFFaUQsdURBQWUsQ0FBQztJQUNyQitLLFFBQVEsRUFBRS9LLDBEQUFnQjtJQUMxQmlMLGVBQWUsRUFBRWpMLDBEQUFnQjtJQUNqQ2tMLFlBQVksRUFBRWxMLDBEQUFnQjtJQUM5Qm1MLE1BQU0sRUFBRW5MLDBEQUFnQnFMO0VBQzFCLENBQUMsQ0FBQztFQUNGN08sTUFBTSxFQUFFd0QsMERBQWdCO0VBQ3hCa0ssT0FBTyxFQUFFbEsseURBQWlCLENBQUM5QyxNQUFNO0FBQ25DLENBQUM7QUFFRCxpRUFBZStNLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pHTjtBQUNTO0FBQ1k7QUFDUjtBQUNRO0FBQUE7QUFFL0MsU0FBU3dCLGtCQUFrQkEsQ0FBQTFQLElBQUEsRUFJeEI7RUFBQSxJQUp5QjtJQUMxQjJQLGFBQWE7SUFDYkMsbUJBQW1CO0lBQ25CQztFQUNGLENBQUMsR0FBQTdQLElBQUE7RUFDQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixvQkFDRVcsdURBQUEsQ0FBQUUsdURBQUE7SUFBQWMsUUFBQSxnQkFDRWxCLHNEQUFBLENBQUNpRyxpREFBTTtNQUNMOUUsU0FBUyxFQUFFckIsbUVBQTBCO01BQ3JDcUwsT0FBTyxFQUFDLFVBQVU7TUFDbEJDLElBQUksRUFBQyxPQUFPO01BQ1p4SixPQUFPLEVBQUVtSixhQUFjO01BQUE3SixRQUFBLEVBRXRCVixDQUFDLENBQUMsOEJBQThCO0lBQUMsQ0FDNUIsQ0FBQyxlQUNUUixzREFBQSxDQUFDaUcsaURBQU07TUFDTDlFLFNBQVMsRUFBRXJCLG1FQUEwQjtNQUNyQ3FMLE9BQU8sRUFBQyxVQUFVO01BQ2xCQyxJQUFJLEVBQUMsT0FBTztNQUNaeEosT0FBTyxFQUFFb0osbUJBQW9CO01BQUE5SixRQUFBLEVBRTVCVixDQUFDLENBQUMsOEJBQThCO0lBQUMsQ0FDNUIsQ0FBQyxlQUNUUixzREFBQSxDQUFDaUcsaURBQU07TUFDTDlFLFNBQVMsRUFBRXJCLG1FQUEwQjtNQUNyQ3FMLE9BQU8sRUFBQyxVQUFVO01BQ2xCQyxJQUFJLEVBQUMsT0FBTztNQUNaeEosT0FBTyxFQUFFcUosbUJBQW9CO01BQUEvSixRQUFBLEVBRTVCVixDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQztFQUFBLENBQ1QsQ0FBQztBQUVQO0FBRUFzSyxrQkFBa0IsQ0FBQzlJLFNBQVMsR0FBRztFQUM3QitJLGFBQWEsRUFBRTFMLHdEQUFjO0VBQzdCMkwsbUJBQW1CLEVBQUUzTCx3REFBYztFQUNuQzRMLG1CQUFtQixFQUFFNUwsd0RBQWM0QztBQUNyQyxDQUFDO0FBRUQsaUVBQWU2SSxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hEUDtBQUNTO0FBQ087QUFDSztBQUNLO0FBQ0U7QUFDUDtBQUFBO0FBRS9DLFNBQVNPLFlBQVlBLENBQUFqUSxJQUFBLEVBQTZCO0VBQUEsSUFBNUI7SUFBRWdCLEtBQUs7SUFBRVAsTUFBTTtJQUFFME47RUFBUSxDQUFDLEdBQUFuTyxJQUFBO0VBQzlDLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLG9CQUNFVyx1REFBQSxDQUFBRSx1REFBQTtJQUFBYyxRQUFBLGdCQUNFaEIsdURBQUEsQ0FBQ21DLDhDQUFHO01BQUNsQixTQUFTLEVBQUVyQixvRUFBMkI7TUFBQ3dCLEVBQUUsRUFBRTtRQUFFQyxFQUFFLEVBQUUsQ0FBQztRQUFFZ0ssRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBckssUUFBQSxnQkFDL0RsQixzREFBQTtRQUFBa0IsUUFBQSxFQUFLVixDQUFDLENBQUMsNkJBQTZCO01BQUMsQ0FBSyxDQUFDLGVBQzNDUixzREFBQSxDQUFDOEcsK0NBQUk7UUFBQ2xELFNBQVM7UUFBQTFDLFFBQUEsZUFDYmxCLHNEQUFBLENBQUM4RywrQ0FBSTtVQUNISSxFQUFFLEVBQUUsRUFBRztVQUNQL0YsU0FBUyxFQUFFckIsMEVBQWlDO1VBQzVDd0IsRUFBRSxFQUFFO1lBQUVFLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFDZHlGLElBQUk7VUFBQS9GLFFBQUEsZUFFSmxCLHNEQUFBLENBQUNzSiwwREFBaUI7WUFDaEJsTixLQUFLLEVBQUVBLEtBQU07WUFDYlAsTUFBTSxFQUFFQSxNQUFPO1lBQ2YwTixPQUFPLEVBQUVBO1VBQVEsQ0FDbEI7UUFBQyxDQUNFO01BQUMsQ0FDSCxDQUFDO0lBQUEsQ0FDSixDQUFDLGVBQ052SixzREFBQSxDQUFDcUMsOENBQUc7TUFBQzZFLEVBQUUsRUFBRSxFQUFHO01BQUM1RixFQUFFLEVBQUU7UUFBRUUsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBTixRQUFBLGVBQ3pCbEIsc0RBQUEsQ0FBQzhLLDJEQUFrQjtRQUNqQkMsYUFBYSxFQUFFQSxDQUFBLEtBQU0sQ0FBQyxDQUFFO1FBQ3hCQyxtQkFBbUIsRUFBRUEsQ0FBQSxLQUFNLENBQUMsQ0FBRTtRQUM5QkMsbUJBQW1CLEVBQUVBLENBQUEsS0FBTSxDQUFDO01BQUUsQ0FDL0I7SUFBQyxDQUNDLENBQUM7RUFBQSxDQUNOLENBQUM7QUFFUDtBQUVBSSxZQUFZLENBQUNySixTQUFTLEdBQUc7RUFDdkI1RixLQUFLLEVBQUVpRCwwREFBZ0I7RUFDdkJ4RCxNQUFNLEVBQUV3RCwwREFBZ0I7RUFDeEJrSyxPQUFPLEVBQUVsSyx5REFBaUIsQ0FBQzlDLE1BQU07QUFDbkMsQ0FBQztBQUVELGlFQUFlOE8sWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUNhO0FBQ0w7QUFDWTtBQUNSO0FBQ1c7QUFDZTtBQUNsQjtBQUFBO0FBRS9DLFNBQVNNLGFBQWFBLENBQUF2USxJQUFBLEVBQThDO0VBQUEsSUFBN0M7SUFBRW1PLE9BQU87SUFBRXFDLEtBQUs7SUFBRUMsZUFBZTtJQUFFaFE7RUFBTyxDQUFDLEdBQUFULElBQUE7RUFDaEUsTUFBTTtJQUFFb0Y7RUFBRSxDQUFDLEdBQUdqQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDdU0sY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHM00sK0NBQVEsQ0FDbERzTSxzRUFDRixDQUFDO0VBQ0QsTUFBTU0sYUFBYSxHQUFHekMsT0FBTyxFQUFFMEMsS0FBSyxDQUFDLENBQUMsRUFBRUgsY0FBYyxDQUFDO0VBQ3ZELE1BQU1JLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3ZCLElBQUlOLEtBQUssR0FBR3JDLE9BQU8sQ0FBQzlNLE1BQU0sRUFBRTtNQUMxQm9QLGVBQWUsQ0FBQyxDQUFDO0lBQ25CO0lBQ0FFLGlCQUFpQixDQUFDRCxjQUFjLEdBQUdKLHNFQUF3QixDQUFDO0VBQzlELENBQUM7RUFFRCxNQUFNUyxVQUFVLEdBQUdBLENBQUEsS0FBTUosaUJBQWlCLENBQUNMLHNFQUF3QixDQUFDO0VBRXBFLG9CQUNFeEwsdURBQUEsQ0FBQUUsdURBQUE7SUFBQWMsUUFBQSxHQUNHOEssYUFBYSxFQUFFL0MsR0FBRyxDQUFFL0ssTUFBTSxpQkFDekI4QixzREFBQSxDQUFDeUwseURBQWdCO01BQWlCdk4sTUFBTSxFQUFFQSxNQUFPO01BQUNyQyxNQUFNLEVBQUVBO0lBQU8sR0FBMUNxQyxNQUFNLENBQUN2QixFQUFxQyxDQUNwRSxDQUFDLEVBQ0Q0TSxPQUFPLEVBQUU5TSxNQUFNLEdBQUdxUCxjQUFjLGdCQUMvQjlMLHNEQUFBLENBQUNpRyxpREFBTTtNQUFDOUUsU0FBUyxFQUFFckIsK0RBQXNCO01BQUM4QixPQUFPLEVBQUVzSyxVQUFXO01BQUFoTCxRQUFBLEVBQzNEVixDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQyxHQUVULEVBQ0QsRUFDQXdMLGFBQWEsRUFBRXZQLE1BQU0sR0FBR2lQLHNFQUF3QixJQUNqRE0sYUFBYSxFQUFFdlAsTUFBTSxLQUFLbVAsS0FBSyxnQkFDN0I1TCxzREFBQSxDQUFDaUcsaURBQU07TUFBQzlFLFNBQVMsRUFBRXJCLCtEQUFzQjtNQUFDOEIsT0FBTyxFQUFFdUssVUFBVztNQUFBakwsUUFBQSxFQUMzRFYsQ0FBQyxDQUFDLDBCQUEwQjtJQUFDLENBQ3hCLENBQUMsR0FFVCxFQUNEO0VBQUEsQ0FDRCxDQUFDO0FBRVA7QUFFQW1MLGFBQWEsQ0FBQzNKLFNBQVMsR0FBRztFQUN4QnVILE9BQU8sRUFBRWxLLHlEQUFpQixDQUFDOUMsTUFBTTtBQUNuQyxDQUFDO0FBRUQsaUVBQWVvUCxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25EWTtBQUNMO0FBQ1k7QUFDRztBQUNWO0FBQ087QUFDSjtBQUNIO0FBQ29CO0FBQ2pCO0FBQ3FCO0FBQUE7QUFFaEUsTUFBTWdCLFVBQVUsR0FBR3ZSLElBQUEsSUFLYjtFQUFBLElBTGM7SUFDbEJ3UixZQUFZO0lBQ1pDLFlBQVk7SUFDWkMsY0FBYztJQUNkQztFQUNGLENBQUMsR0FBQTNSLElBQUE7RUFDQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUU5QixJQUFJc04sWUFBWSxFQUFFO0lBQ2hCLG9CQUNFN00sdURBQUEsQ0FBQ2lHLGlEQUFNO01BQUM5RSxTQUFTLEVBQUVyQixtRUFBMEI7TUFBQW9CLFFBQUEsRUFDMUNWLENBQUMsQ0FBQyw2QkFBNkI7SUFBQyxDQUMzQixDQUFDO0VBRWI7RUFFQSxvQkFDRU4sd0RBQUEsQ0FBQ1osNERBQUs7SUFDSmdDLEVBQUUsRUFBRTtNQUNGbUQsY0FBYyxFQUFFLGVBQWU7TUFDL0JKLEtBQUssRUFBRTtJQUNULENBQUU7SUFDRmhELFVBQVUsRUFBQyxRQUFRO0lBQ25CbkcsU0FBUyxFQUFDLEtBQUs7SUFBQWdHLFFBQUEsZ0JBRWZsQix1REFBQSxDQUFDaUcsaURBQU07TUFBQzlFLFNBQVMsRUFBRXJCLHVFQUE4QjtNQUFDOEIsT0FBTyxFQUFFbUwsV0FBWTtNQUFBN0wsUUFBQSxFQUNwRTBMLFlBQVksR0FDVHBNLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxHQUNoQ0EsQ0FBQyxDQUFDLDJCQUEyQjtJQUFDLENBQzVCLENBQUMsRUFDUnNNLGNBQWMsaUJBQ2I5TSx1REFBQSxDQUFDaUcsaURBQU07TUFBQzlFLFNBQVMsRUFBRXJCLCtEQUFzQjtNQUFBb0IsUUFBQSxFQUN0Q1YsQ0FBQyxDQUFDLCtCQUErQjtJQUFDLENBQzdCLENBQ1Q7RUFBQSxDQUNJLENBQUM7QUFFWixDQUFDO0FBRUQsTUFBTWlMLGdCQUFnQixHQUFHL1AsS0FBQSxJQUF3QjtFQUFBLElBQXZCO0lBQUV3QyxNQUFNO0lBQUVyQztFQUFPLENBQUMsR0FBQUgsS0FBQTtFQUMxQyxNQUFNO0lBQUU4RTtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNa0IsR0FBRyxHQUFHK0wsOENBQU0sQ0FBQyxDQUFDO0VBQ3BCLE1BQU0sQ0FBQ1csVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBR2hPLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQ2xELE1BQU07SUFBRXlOLFlBQVk7SUFBRUQ7RUFBYSxDQUFDLEdBQUdGLDBFQUFnQixDQUFDeE8sTUFBTSxDQUFDO0VBQy9ELE1BQU1tUCxZQUFZLEdBQUdkLDZEQUFxQixDQUFDMVEsTUFBTSxDQUFDO0VBQ2xELE1BQU1pUixjQUFjLEdBQUdPLFlBQVksR0FBRzVNLEdBQUc7RUFFekMsb0JBQ0VQLHdEQUFBLENBQUM0RywrQ0FBSTtJQUFpQjNGLFNBQVMsRUFBRXJCLDZEQUFvQjtJQUFDOEQsU0FBUztJQUFBMUMsUUFBQSxnQkFDN0RsQix1REFBQSxDQUFDOEcsK0NBQUk7TUFBQ0ksRUFBRSxFQUFFLENBQUU7TUFBQ2xDLE9BQU8sRUFBRSxDQUFFO01BQUNpQyxJQUFJO01BQUM5RixTQUFTLEVBQUVyQixpRUFBd0I7TUFBQW9CLFFBQUEsZUFDL0RsQix1REFBQTtRQUFBa0IsUUFBQSxFQUFLaEQsTUFBTSxDQUFDK0wsV0FBVyxFQUFFcFA7TUFBSSxDQUFLO0lBQUMsQ0FDL0IsQ0FBQyxlQUNQbUYsdURBQUEsQ0FBQzhHLCtDQUFJO01BQUNJLEVBQUUsRUFBRSxDQUFFO01BQUNsQyxPQUFPLEVBQUUsQ0FBRTtNQUFDaUMsSUFBSTtJQUFBLENBRXZCLENBQUMsZUFDUC9HLHdEQUFBLENBQUM0RywrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsRUFBRztNQUFDNUYsRUFBRSxFQUFFO1FBQUVpSyxFQUFFLEVBQUUsQ0FBQztRQUFFL0osRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFDeUYsSUFBSTtNQUFBL0YsUUFBQSxHQUNyQ2hELE1BQU0sQ0FBQ3NQLEtBQUssRUFBRW5VLEtBQUssZ0JBQ2xCNkcsd0RBQUEsQ0FBQUUsd0RBQUE7UUFBQWMsUUFBQSxnQkFDRWhCLHdEQUFBLENBQUNtQyw4Q0FBRztVQUFDbEIsU0FBUyxFQUFFckIsc0RBQWE7VUFBQW9CLFFBQUEsR0FDMUJWLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxFQUFDLEdBQ2xDO1FBQUEsQ0FBSyxDQUFDLGVBQ05SLHVEQUFBLENBQUNxQyw4Q0FBRztVQUFDbEIsU0FBUyxFQUFFckIsaUVBQXdCO1VBQUFvQixRQUFBLEVBQUVoRCxNQUFNLENBQUNzUCxLQUFLLEVBQUVuVTtRQUFLLENBQU0sQ0FBQztNQUFBLENBQ3BFLENBQUMsR0FFSDZFLE1BQU0sQ0FBQ3dQLFNBQVMsaUJBQ2QxTix1REFBQTtRQUFNbUIsU0FBUyxFQUFFckIsaUVBQXdCO1FBQUFvQixRQUFBLEVBQ3RDVixDQUFDLENBQUMsMENBQTBDO01BQUMsQ0FDMUMsQ0FFVCxlQUNETix3REFBQTtRQUFNaUIsU0FBUyxFQUFFckIseURBQWdCO1FBQUFvQixRQUFBLEdBQzlCVixDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNuQ1IsdURBQUEsQ0FBQ3NNLG9EQUFXO1VBQUMzQixNQUFNLEVBQUV6TSxNQUFNLENBQUN5TSxNQUFPO1VBQUNpRCxJQUFJO1VBQUNDLFNBQVM7UUFBQSxDQUFFLENBQUM7TUFBQSxDQUNqRCxDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1AzTix3REFBQSxDQUFDNEcsK0NBQUk7TUFBQ2xELFNBQVM7TUFBQTFDLFFBQUEsZ0JBQ2JsQix1REFBQSxDQUFDOEcsK0NBQUk7UUFBQ2xELFNBQVM7UUFBQzFJLFNBQVMsRUFBQyxLQUFLO1FBQUNnTSxFQUFFLEVBQUUsRUFBRztRQUFDMkIsRUFBRSxFQUFFLENBQUU7UUFBQ3hILFVBQVUsRUFBQyxRQUFRO1FBQUM0RixJQUFJO1FBQUEvRixRQUFBLGVBQ3JFbEIsdURBQUEsQ0FBQ3FNLHFEQUFZO1VBQUNuTyxNQUFNLEVBQUVBO1FBQU8sQ0FBRTtNQUFDLENBQzVCLENBQUMsZUFDUDhCLHVEQUFBLENBQUM4RywrQ0FBSTtRQUFDOUIsT0FBTyxFQUFFLENBQUU7UUFBQ2tDLEVBQUUsRUFBRSxFQUFHO1FBQUMyQixFQUFFLEVBQUUsQ0FBRTtRQUFDakYsU0FBUztRQUFDcUQsSUFBSTtRQUFBL0YsUUFBQSxlQUM3Q2xCLHVEQUFBLENBQUM4RywrQ0FBSTtVQUNIRyxJQUFJO1VBQ0pyRCxTQUFTO1VBQ1R1RyxLQUFLLEVBQUMsUUFBUTtVQUNkN0ksRUFBRSxFQUFFO1lBQ0ZtRCxjQUFjLEVBQUU7VUFDbEIsQ0FBRTtVQUNGdEQsU0FBUyxFQUFFckIsb0VBQTJCO1VBQUFvQixRQUFBLEVBRXJDaEQsTUFBTSxDQUFDd1AsU0FBUyxpQkFDZjFOLHVEQUFBLENBQUMyTSxVQUFVO1lBQ1RFLFlBQVksRUFBRUEsWUFBYTtZQUMzQkQsWUFBWSxFQUFFQSxZQUFhO1lBQzNCRSxjQUFjLEVBQUVBLGNBQWU7WUFDL0JDLFdBQVcsRUFBRUEsQ0FBQSxLQUFNSyxhQUFhLENBQUNsUCxNQUFNO1VBQUUsQ0FDMUM7UUFDRixDQUNHO01BQUMsQ0FDSCxDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1A4Qix1REFBQSxDQUFDeU0scURBQVk7TUFDWDVRLE1BQU0sRUFBRUEsTUFBTztNQUNmcUMsTUFBTSxFQUFFaVAsVUFBVztNQUNuQlksT0FBTyxFQUFFQSxDQUFBLEtBQU1YLGFBQWEsQ0FBQyxJQUFJO0lBQUUsQ0FDcEMsQ0FBQztFQUFBLEdBeERPbFAsTUFBTSxDQUFDdkIsRUF5RFosQ0FBQztBQUVYLENBQUM7QUFFRDhPLGdCQUFnQixDQUFDekosU0FBUyxHQUFHO0VBQzNCOUQsTUFBTSxFQUFFbUIsdURBQWUsQ0FBQztJQUN0QjFDLEVBQUUsRUFBRTBDLDBEQUFnQjtJQUNwQm1PLEtBQUssRUFBRW5PLHVEQUFlLENBQUM7TUFDckJoRyxLQUFLLEVBQUVnRywwREFBZ0JxTDtJQUN6QixDQUFDLENBQUM7SUFDRkMsTUFBTSxFQUFFdEwsMERBQWdCO0lBQ3hCMk8scUJBQXFCLEVBQUUzTywwREFBZ0I7SUFDdkM0SyxXQUFXLEVBQUU1Syx1REFBZSxDQUFDO01BQzNCeEUsSUFBSSxFQUFFd0UsMERBQWdCcUw7SUFDeEIsQ0FBQztFQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsaUVBQWVlLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2SUw7QUFDUztBQUMyQjtBQUNmO0FBQUE7QUFFL0MsTUFBTXlDLFlBQVksR0FBRyxFQUFFO0FBRXZCLFNBQVM1QixXQUFXQSxDQUFBbFIsSUFBQSxFQU1qQjtFQUFBLElBTmtCO0lBQ25CdVAsTUFBTTtJQUNOaUQsSUFBSSxHQUFHLEtBQUs7SUFDWkMsU0FBUyxHQUFHLEtBQUs7SUFDakJNLFFBQVEsR0FBRyxLQUFLO0lBQ2hCOUosS0FBSyxHQUFHNko7RUFDVixDQUFDLEdBQUE5UyxJQUFBO0VBQ0MsTUFBTWdULFVBQVUsR0FBRyxHQUFHUCxTQUFTLElBQUkvTiwyRUFBaUMsSUFDbEVxTyxRQUFRLElBQUlyTyx5REFBZSxFQUMzQjtFQUNGLG9CQUNFSSx1REFBQTtJQUFLaUIsU0FBUyxFQUFFckIsdUVBQThCO0lBQUFvQixRQUFBLGdCQUM1Q2xCLHNEQUFBO01BQU1tQixTQUFTLEVBQUVpTixVQUFXO01BQUNHLEtBQUssRUFBRTtRQUFFbEs7TUFBTSxDQUFFO01BQUFuRCxRQUFBLEVBQzNDeUo7SUFBTSxDQUNILENBQUMsRUFDTmlELElBQUksaUJBQ0g1TixzREFBQSxDQUFDaU8sd0VBQWU7TUFDZDlNLFNBQVMsRUFBRXJCLHlEQUFnQjtNQUMzQjhCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNNk0sU0FBUyxDQUFDQyxTQUFTLENBQUNDLFNBQVMsQ0FBQ2hFLE1BQU07SUFBRSxDQUN0RCxDQUNGO0VBQUEsQ0FDRSxDQUFDO0FBRVY7QUFFQTJCLFdBQVcsQ0FBQ3RLLFNBQVMsR0FBRztFQUN0QjJJLE1BQU0sRUFBRXRMLDBEQUFnQjtFQUN4QnVPLElBQUksRUFBRXZPLHdEQUFjO0VBQ3BCd08sU0FBUyxFQUFFeE8sd0RBQWM7RUFDekI4TyxRQUFRLEVBQUU5Tyx3REFBYztFQUN4QmdGLEtBQUssRUFBRWhGLDBEQUFnQnNMO0FBQ3pCLENBQUM7QUFFRCxpRUFBZTJCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4Q2M7QUFDTztBQUNMO0FBQ0o7QUFDRjtBQUNjO0FBQ047QUFDRDtBQUNJO0FBQUE7QUFFL0MsU0FBUzBDLFFBQVFBLENBQUNDLEtBQUssRUFBRTtFQUN2QixNQUFNO0lBQUUvTixRQUFRO0lBQUVsRyxLQUFLO0lBQUVrVTtFQUFNLENBQUMsR0FBR0QsS0FBSztFQUN4QyxvQkFDRWpQLHNEQUFBO0lBQ0VtUCxJQUFJLEVBQUMsVUFBVTtJQUNmQyxNQUFNLEVBQUVwVSxLQUFLLEtBQUtrVSxLQUFNO0lBQ3hCdlMsRUFBRSxFQUFFLFlBQVl1UyxLQUFLLEVBQUc7SUFDeEIsbUJBQWlCLE9BQU9BLEtBQUssRUFBRztJQUFBaE8sUUFBQSxFQUUvQmxHLEtBQUssS0FBS2tVLEtBQUssSUFBSWhPO0VBQVEsQ0FDekIsQ0FBQztBQUVWO0FBRUEsU0FBU21PLHVCQUF1QkEsQ0FBQWpVLElBQUEsRUFRN0I7RUFBQSxJQVI4QjtJQUMvQmtVLFFBQVE7SUFDUnpULE1BQU07SUFDTjBOLE9BQU87SUFDUG5OLEtBQUs7SUFDTHdQLEtBQUs7SUFDTDJELGVBQWU7SUFDZjFEO0VBQ0YsQ0FBQyxHQUFBelEsSUFBQTtFQUNDLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ3ZFLEtBQUssRUFBRXdVLFFBQVEsQ0FBQyxHQUFHcFEsK0NBQVEsQ0FBQyxDQUFDLENBQUM7RUFDckMsTUFBTXFRLFlBQVksR0FBR0EsQ0FBQ0MsQ0FBQyxFQUFFQyxRQUFRLEtBQUs7SUFDcENILFFBQVEsQ0FBQ0csUUFBUSxDQUFDO0VBQ3BCLENBQUM7RUFFRCxNQUFNQyxXQUFXLEdBQUdBLENBQUEsS0FDbEJMLGVBQWUsaUJBQ2JyUCx1REFBQTtJQUFNaUIsU0FBUyxFQUFFckIscUVBQTRCO0lBQUFvQixRQUFBLGdCQUMzQ2xCLHNEQUFBLENBQUMrTyxrRUFBUztNQUFDek4sRUFBRSxFQUFFO1FBQUVxRCxLQUFLLEVBQUU7TUFBVTtJQUFFLENBQUUsQ0FBQyxFQUN0Q25FLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQztFQUFBLENBQ3ZDLENBQ1A7RUFFSCxPQUFPOE8sUUFBUSxnQkFDYnBQLHVEQUFBLENBQUNtQyw4Q0FBRztJQUFDbEIsU0FBUyxFQUFFckIsb0VBQTJCO0lBQUFvQixRQUFBLGdCQUN6Q2xCLHNEQUFBLENBQUNxQyw4Q0FBRztNQUFDZixFQUFFLEVBQUU7UUFBRXlPLFdBQVcsRUFBRSxTQUFTO1FBQUV2TyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUFOLFFBQUEsZUFDekNoQix1REFBQSxDQUFDMk8sMkRBQUk7UUFDSDdULEtBQUssRUFBRUEsS0FBTTtRQUNiK0csUUFBUSxFQUFFME4sWUFBYTtRQUN2Qk8sU0FBUyxFQUFDLE1BQU07UUFDaEIsY0FBVyxtQkFBbUI7UUFDOUJDLGlCQUFpQixFQUFFO1VBQ2pCMUIsS0FBSyxFQUFFO1lBQ0wyQixVQUFVLEVBQUU7VUFDZDtRQUNGLENBQUU7UUFBQWhQLFFBQUEsZ0JBRUZsQixzREFBQSxDQUFDOE8sMERBQUc7VUFBQ2pJLEtBQUssRUFBRXJHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBRTtVQUFDVyxTQUFTLEVBQUVyQiwyREFBaUJxUTtRQUFDLENBQUUsQ0FBQyxlQUNqRW5RLHNEQUFBLENBQUM4TywwREFBRztVQUFDakksS0FBSyxFQUFFckcsQ0FBQyxDQUFDLGdCQUFnQixDQUFFO1VBQUNXLFNBQVMsRUFBRXJCLDJEQUFpQnFRO1FBQUMsQ0FBRSxDQUFDO01BQUEsQ0FDN0Q7SUFBQyxDQUNKLENBQUMsRUFDTFAsV0FBVyxDQUFDLENBQUMsZUFDZDVQLHNEQUFBLENBQUNnUCxRQUFRO01BQUNoVSxLQUFLLEVBQUVBLEtBQU07TUFBQ2tVLEtBQUssRUFBRSxDQUFFO01BQUFoTyxRQUFBLGVBQy9CbEIsc0RBQUEsQ0FBQzJMLHNEQUFhO1FBQ1p2UCxLQUFLLEVBQUVBLEtBQU07UUFDYm1OLE9BQU8sRUFBRUEsT0FBUTtRQUNqQnFDLEtBQUssRUFBRUEsS0FBTTtRQUNiQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDaFEsTUFBTSxFQUFFQTtNQUFPLENBQ2hCO0lBQUMsQ0FDTSxDQUFDLGVBQ1htRSxzREFBQSxDQUFDZ1AsUUFBUTtNQUFDaFUsS0FBSyxFQUFFQSxLQUFNO01BQUNrVSxLQUFLLEVBQUUsQ0FBRTtNQUFBaE8sUUFBQSxlQUMvQmxCLHNEQUFBLENBQUNxTCxxREFBWTtRQUFDalAsS0FBSyxFQUFFQSxLQUFNO1FBQUNQLE1BQU0sRUFBRUEsTUFBTztRQUFDME4sT0FBTyxFQUFFQTtNQUFRLENBQUU7SUFBQyxDQUN4RCxDQUFDO0VBQUEsQ0FDUixDQUFDLGdCQUVOckosdURBQUEsQ0FBQUUsdURBQUE7SUFBQWMsUUFBQSxnQkFDRWxCLHNEQUFBLENBQUM4RywrQ0FBSTtNQUFDRyxJQUFJO01BQUMyQixFQUFFLEVBQUUsRUFBRztNQUFBMUgsUUFBQSxFQUNmME8sV0FBVyxDQUFDO0lBQUMsQ0FDVixDQUFDLGVBQ1A1UCxzREFBQSxDQUFDOEcsK0NBQUk7TUFDSDlCLE9BQU8sRUFBRSxDQUFFO01BQ1hpQyxJQUFJO01BQ0oyQixFQUFFLEVBQUUsQ0FBRTtNQUNOeE0sS0FBSyxFQUFFO1FBQUV3TSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQ2pCekgsU0FBUyxFQUFFckIsb0VBQTJCO01BQUFvQixRQUFBLGVBRXRDbEIsc0RBQUEsQ0FBQzJMLHNEQUFhO1FBQ1p2UCxLQUFLLEVBQUVBLEtBQU07UUFDYm1OLE9BQU8sRUFBRUEsT0FBUTtRQUNqQnFDLEtBQUssRUFBRUEsS0FBTTtRQUNiQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDaFEsTUFBTSxFQUFFQTtNQUFPLENBQ2hCO0lBQUMsQ0FDRSxDQUFDLGVBQ1BtRSxzREFBQSxDQUFDOEcsK0NBQUk7TUFBQzlCLE9BQU8sRUFBRSxDQUFFO01BQUNpQyxJQUFJO01BQUMyQixFQUFFLEVBQUUsQ0FBRTtNQUFDeE0sS0FBSyxFQUFFO1FBQUV3TSxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUExSCxRQUFBLGVBQzdDbEIsc0RBQUEsQ0FBQ3FMLHFEQUFZO1FBQUNqUCxLQUFLLEVBQUVBLEtBQU07UUFBQ1AsTUFBTSxFQUFFQSxNQUFPO1FBQUMwTixPQUFPLEVBQUVBO01BQVEsQ0FBRTtJQUFDLENBQzVELENBQUM7RUFBQSxDQUNQLENBQ0g7QUFDSDtBQUVBLGlFQUFlOEYsdUJBQXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxR2E7QUFDaEI7QUFDa0M7QUFDdEI7QUFDRztBQUNGO0FBQ1E7QUFDTjtBQUNjO0FBQ1Y7QUFDZDtBQUNPO0FBQ2lCO0FBQUE7QUFFaEUsU0FBUzVILFVBQVVBLENBQUN3SCxLQUFLLEVBQUU7RUFDekIsTUFBTTtJQUFFcFQsTUFBTTtJQUFFTztFQUFNLENBQUMsR0FBRzZTLEtBQUs7RUFDL0IsTUFBTTtJQUFFek87RUFBRSxDQUFDLEdBQUdqQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTW5GLFFBQVEsR0FBR2lOLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQUUvSyxRQUFRO0lBQUVrVSxTQUFTO0lBQUU1STtFQUFhLENBQUMsR0FBR04sd0RBQVcsQ0FDdERVLEtBQUssSUFBS0EsS0FBSyxDQUFDcE0sV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUNsQzJMLHFEQUNGLENBQUM7RUFDRCxNQUFNa0osS0FBSyxHQUFHTCw4REFBUSxDQUFDLENBQUM7RUFDeEIsTUFBTWQsUUFBUSxHQUFHZSxrRUFBYSxDQUFDSSxLQUFLLENBQUNDLFdBQVcsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVELE1BQU0sQ0FBQ0MsZ0JBQWdCLEVBQUVDLGlCQUFpQixDQUFDLEdBQUd6UiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUM3RCxNQUFNbVEsZUFBZSxHQUFHblQsS0FBSyxDQUFDMFUsYUFBYSxFQUFFQyxJQUFJLENBQzlDN1MsTUFBTSxJQUFLQSxNQUFNLENBQUNzUCxLQUFLLEVBQUVoRCxNQUFNLEtBQUssWUFDdkMsQ0FBQztFQUNELE1BQU13RyxtQkFBbUIsR0FBRyxNQUFBQSxDQUFBLEtBQVk7SUFDdEMsTUFBTTVXLFFBQVEsQ0FDWjBELDJEQUFpQixDQUFDO01BQ2hCZCxPQUFPLEVBQUVaLEtBQUssQ0FBQ08sRUFBRTtNQUNqQitCLFlBQVksRUFBRThSLFNBQVM7TUFDdkJsVixPQUFPLEVBQUVnQjtJQUNYLENBQUMsQ0FDSCxDQUFDLENBQUNQLEtBQUssQ0FBRWUsQ0FBQyxJQUFLO01BQ2JtVSxPQUFPLENBQUNDLEdBQUcsQ0FBQ3BVLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUM7RUFDSixDQUFDO0VBRURxRixnREFBUyxDQUFDLE1BQU07SUFDZDZPLG1CQUFtQixDQUFDLENBQUM7RUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLE1BQU1uRixlQUFlLEdBQUdBLENBQUEsS0FDdEJ6UixRQUFRLENBQ04wRCwyREFBaUIsQ0FBQztJQUNoQmQsT0FBTyxFQUFFWixLQUFLLENBQUNPLEVBQUU7SUFDakJ0QixJQUFJLEVBQUVlLEtBQUssQ0FBQytVLG9CQUFvQixHQUFHaFosMkRBQWE7SUFDaERtRCxPQUFPLEVBQUVnQixRQUFRO0lBQ2pCZCxJQUFJLEVBQUU7RUFDUixDQUFDLENBQ0gsQ0FBQztFQUVILG9CQUNFMEUsd0RBQUEsQ0FBQUUsd0RBQUE7SUFBQWMsUUFBQSxnQkFDRWhCLHdEQUFBLENBQUNtQyw4Q0FBRztNQUNGZixFQUFFLEVBQUU7UUFDRjBELE9BQU8sRUFBRTtVQUNQa0MsRUFBRSxFQUFFLENBQUM7VUFDTDBCLEVBQUUsRUFBRSxDQUFDO1VBQ0xDLEVBQUUsRUFBRTtRQUNOO01BQ0YsQ0FBRTtNQUNGMUgsU0FBUyxFQUFFckIsMEVBQWdDO01BQUFvQixRQUFBLGdCQUUzQ2hCLHdEQUFBO1FBQU1pQixTQUFTLEVBQUVyQixpRUFBdUI7UUFBQW9CLFFBQUEsR0FDckNWLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFDLElBQUUsRUFBQytQLHdEQUFnQixDQUFDblUsS0FBSyxDQUFDaU8sT0FBTyxDQUFDLEVBQUMsSUFBRSxFQUFDLEdBQUcsRUFDL0Q3SixDQUFDLENBQUMsd0JBQXdCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNsQ1IsdURBQUEsQ0FBQ3NNLHFEQUFXO1VBQUMzQixNQUFNLEVBQUV2TyxLQUFLLENBQUN1TyxNQUFPO1VBQUNpRCxJQUFJO1VBQUNDLFNBQVM7UUFBQSxDQUFFLENBQUM7TUFBQSxDQUNoRCxDQUFDLEVBQ055QixRQUFRLGlCQUNQdFAsdURBQUEsQ0FBQ2lHLGlEQUFNO1FBQ0wzRSxFQUFFLEVBQUU7VUFBRTBELE9BQU8sRUFBRTtRQUFFLENBQUU7UUFDbkI3RCxTQUFTLEVBQUVyQiw2REFBbUI7UUFDOUI4QixPQUFPLEVBQUVBLENBQUEsS0FBTWlQLGlCQUFpQixDQUFDLENBQUNELGdCQUFnQixDQUFFO1FBQUExUCxRQUFBLEVBRW5EMFAsZ0JBQWdCLEdBQ2JwUSxDQUFDLENBQUMsNEJBQTRCLENBQUMsR0FDL0JBLENBQUMsQ0FBQyw0QkFBNEI7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRSxDQUFDLGVBQ05SLHVEQUFBLENBQUM4RywrQ0FBSTtNQUVIbEQsU0FBUztNQUNUMk4sVUFBVSxFQUFFLENBQUU7TUFDZEMsYUFBYSxFQUFFO1FBQUV0SyxFQUFFLEVBQUUsQ0FBQztRQUFFdUssRUFBRSxFQUFFLENBQUM7UUFBRTdJLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDdkN6SCxTQUFTLEVBQUUsR0FBR3JCLHNFQUEyQixJQUN2Q3dQLFFBQVEsSUFBSSxDQUFDc0IsZ0JBQWdCLEdBQUc5USw4REFBbUIsR0FBRyxFQUFFLEVBQ3ZEO01BQ0h3QixFQUFFLEVBQUU7UUFDRnNRLGFBQWEsRUFBRTtVQUNiaEosRUFBRSxFQUFFLEtBQUs7VUFDVEMsRUFBRSxFQUFFO1FBQ04sQ0FBQztRQUNEN0QsT0FBTyxFQUFFO1VBQ1BrQyxFQUFFLEVBQUUsQ0FBQztVQUNMMEIsRUFBRSxFQUFFLENBQUM7VUFDTEMsRUFBRSxFQUFFO1FBQ047TUFDRixDQUFFO01BQUEzSCxRQUFBLGVBRUZsQix1REFBQSxDQUFDcVAsaUVBQXVCO1FBQ3RCQyxRQUFRLEVBQUVBLFFBQVM7UUFDbkJ6VCxNQUFNLEVBQUVBLE1BQU87UUFDZk8sS0FBSyxFQUFFQSxLQUFNO1FBQ2JtTixPQUFPLEVBQUUrRyx1REFBZSxDQUFDMUksWUFBWSxFQUFFeEwsS0FBSyxDQUFDTyxFQUFFLENBQUU7UUFDakRpUCxLQUFLLEVBQUV4UCxLQUFLLENBQUN5VixhQUFjO1FBQzNCdEMsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQzFELGVBQWUsRUFBRUE7TUFBZ0IsQ0FDbEM7SUFBQyxHQTNCR3pQLEtBQUssQ0FBQ08sRUE0QlAsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUVQO0FBRUE4SyxVQUFVLENBQUN6RixTQUFTLEdBQUc7RUFDckJuRyxNQUFNLEVBQUV3RCwwREFBZ0I7RUFDeEJqRCxLQUFLLEVBQUVpRCwwREFBZ0J1TDtBQUN6QixDQUFDO0FBRUQsaUVBQWVuRCxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxSHpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNZO0FBQ3FCO0FBQzZCO0FBQzFDO0FBQUE7QUFFdkQsTUFBTXlLLFlBQVksR0FBRzlXLElBQUEsSUFBc0M7RUFBQSxJQUFyQztJQUFFK1csTUFBTTtJQUFFQyxRQUFRO0lBQUVDO0VBQVcsQ0FBQyxHQUFBalgsSUFBQTtFQUNwRCxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUMrUyxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHcFQscURBQWMsQ0FBQyxFQUFFLENBQUM7RUFDdEQsTUFBTSxDQUFDcVQsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBR3RULHFEQUFjLENBQUMsRUFBRSxDQUFDO0VBQ2hELE1BQU07SUFBRXVULE1BQU07SUFBRUMsTUFBTTtJQUFFQyxPQUFPO0lBQUVDLGVBQWU7SUFBRUM7RUFBYyxDQUFDLEdBQUdYLE1BQU07RUFDMUUsTUFBTXRYLElBQUksR0FBR3pCLDREQUFvQixDQUFDSSxPQUFPO0VBQ3pDLE1BQU13QixLQUFLLEdBQUcyWCxNQUFNLENBQUM5WCxJQUFJLENBQUM7RUFDMUIsTUFBTWtZLEtBQUssR0FBR0gsT0FBTyxDQUFDL1gsSUFBSSxDQUFDLElBQUltWSxPQUFPLENBQUNOLE1BQU0sQ0FBQzdYLElBQUksQ0FBQyxDQUFDO0VBQ3BELE1BQU1vWSxVQUFVLEdBQUdMLE9BQU8sQ0FBQy9YLElBQUksQ0FBQyxJQUFJNlgsTUFBTSxDQUFDN1gsSUFBSSxDQUFDO0VBRWhEc0Usc0RBQWUsQ0FBQyxNQUFNO0lBQ3BCLElBQUltVCxVQUFVLEtBQUssRUFBRSxFQUFFO01BQ3JCRyxVQUFVLENBQUN6WCxLQUFLLEdBQUcsQ0FBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO01BQ2hDLE9BQU9rWSxTQUFTO0lBQ2xCO0lBRUFqQiwrR0FBMEIsQ0FBQ0csUUFBUSxFQUFFRSxVQUFVLEVBQUdhLE9BQU8sSUFBSztNQUM1RCxJQUFJQyxVQUFVLEdBQUcsRUFBRTtNQUVuQixJQUFJcFksS0FBSyxFQUFFO1FBQ1RvWSxVQUFVLEdBQUcsQ0FBQ3BZLEtBQUssQ0FBQztNQUN0QjtNQUVBLElBQUltWSxPQUFPLEVBQUU7UUFDWEMsVUFBVSxHQUFHLENBQUMsR0FBR0EsVUFBVSxFQUFFLEdBQUdELE9BQU8sQ0FBQztNQUMxQztNQUVBVixVQUFVLENBQUNXLFVBQVUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFDRixPQUFPRixTQUFTO0VBQ2xCLENBQUMsRUFBRSxDQUFDbFksS0FBSyxFQUFFc1gsVUFBVSxDQUFDLENBQUM7RUFFdkIsb0JBQ0V0UyxzREFBQSxDQUFDK1IsdURBQVk7SUFDWGxYLElBQUksRUFBRUEsSUFBSztJQUNYMlgsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCYSxZQUFZO0lBQ1pDLFFBQVE7SUFDUkMsa0JBQWtCO0lBQ2xCQyxxQkFBcUI7SUFDckJ4WSxLQUFLLEVBQUVBLEtBQU07SUFDYnlZLE1BQU0sRUFBRUEsQ0FBQSxLQUFNWixlQUFlLENBQUNoWSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBRTtJQUNoRDZZLGNBQWMsRUFBR0MsTUFBTSxJQUFLO01BQzFCO01BQ0EsSUFBSSxPQUFPQSxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQzlCLE9BQU9BLE1BQU07TUFDZjtNQUNBO01BQ0EsSUFBSUEsTUFBTSxDQUFDckIsVUFBVSxFQUFFO1FBQ3JCLE9BQU9xQixNQUFNLENBQUNyQixVQUFVO01BQzFCO01BQ0E7TUFDQSxPQUFPcUIsTUFBTSxDQUFDOVksSUFBSTtJQUNwQixDQUFFO0lBQ0ZrSCxRQUFRLEVBQUVBLENBQUNnQixLQUFLLEVBQUU0TSxRQUFRLEtBQUs7TUFDN0IsTUFBTWlFLFFBQVEsR0FBR2pFLFFBQVEsRUFBRTJDLFVBQVUsSUFBSTNDLFFBQVEsRUFBRTlVLElBQUksSUFBSThVLFFBQVE7TUFDbkU4QyxVQUFVLENBQUNtQixRQUFRLEdBQUcsQ0FBQ0EsUUFBUSxFQUFFLEdBQUdwQixPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDO01BQ3ZETSxhQUFhLENBQUNqWSxJQUFJLEVBQUUrWSxRQUFRLENBQUM7SUFDL0IsQ0FBRTtJQUNGQyxhQUFhLEVBQUVBLENBQUM5USxLQUFLLEVBQUUrUSxhQUFhLEtBQUs7TUFDdkN2QixhQUFhLENBQUN1QixhQUFhLENBQUM7SUFDOUIsQ0FBRTtJQUNGQyxhQUFhLEVBQUVBLENBQUN2QixPQUFPLEVBQUV0VyxNQUFNLEtBQUs7TUFDbEMsTUFBTTtRQUFFb1c7TUFBVyxDQUFDLEdBQUdwVyxNQUFNO01BQzdCLE1BQU04WCxRQUFRLEdBQUcsQ0FBQyxHQUFHeEIsT0FBTyxDQUFDO01BQzdCO01BQ0EsTUFBTXlCLFVBQVUsR0FBR3pCLE9BQU8sQ0FBQzBCLElBQUksQ0FDNUJQLE1BQU0sSUFBS3JCLFVBQVUsS0FBS3FCLE1BQU0sQ0FBQ1EsS0FDcEMsQ0FBQztNQUNELElBQUk3QixVQUFVLEtBQUssRUFBRSxJQUFJLENBQUMyQixVQUFVLEVBQUU7UUFDcENELFFBQVEsQ0FBQ3BaLElBQUksQ0FBQztVQUNaMFgsVUFBVTtVQUNWelgsSUFBSSxFQUFFLFdBQVd5WCxVQUFVO1FBQzdCLENBQUMsQ0FBQztNQUNKO01BRUEsT0FBTzBCLFFBQVE7SUFDakIsQ0FBRTtJQUNGSSxXQUFXLEVBQUdsWSxNQUFNLGlCQUNsQjhELHNEQUFBLENBQUM4UixvREFBU0E7SUFDUjtNQUFBLEdBQ0k1VixNQUFNO01BQ1YySyxLQUFLLEVBQUVyRyxDQUFDLENBQUMsZ0NBQWdDLENBQUU7TUFDM0M2VCxTQUFTO01BQ1RDLFFBQVEsRUFBRWpDLFVBQVc7TUFDckJZLFVBQVUsRUFBRUEsVUFBVztNQUN2QkYsS0FBSyxFQUFFQTtJQUFNLENBQ2QsQ0FDRDtJQUNGd0IsWUFBWSxFQUFFQSxDQUFDdEYsS0FBSyxFQUFFMEUsTUFBTSxLQUFLO01BQy9CLE1BQU07UUFBRS9OLEdBQUc7UUFBRSxHQUFHNE87TUFBWSxDQUFDLEdBQUd2RixLQUFLO01BQ3JDO1FBQUE7UUFDRTtRQUNBalAsc0RBQUE7VUFBQSxHQUFrQndVLFdBQVc7VUFBQXRULFFBQUEsZUFDM0JsQixzREFBQSxDQUFDZ1MscURBQVU7WUFBQzdHLE9BQU8sRUFBQyxPQUFPO1lBQUM3SixFQUFFLEVBQUU7Y0FBRXFELEtBQUssRUFBRTtZQUFpQixDQUFFO1lBQUF6RCxRQUFBLEVBQ3pEeVMsTUFBTSxDQUFDOVk7VUFBSSxDQUNGO1FBQUMsR0FITitLLEdBSUw7TUFBQztJQUVUO0VBQUUsQ0FDSCxDQUFDO0FBRU4sQ0FBQztBQUVEc00sWUFBWSxDQUFDbFEsU0FBUyxHQUFHO0VBQ3ZCbVEsTUFBTSxFQUFFOVMsMERBQWdCLENBQUNnVCxVQUFVO0VBQ25DRCxRQUFRLEVBQUUvUywwREFBZ0IsQ0FBQ2dUO0FBQzdCLENBQUM7QUFFRCxpRUFBZUgsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqSUQ7QUFDUztBQVFaO0FBQ29CO0FBQUE7QUFFM0MsTUFBTStDLHlCQUF5QixHQUFHN1osSUFBQSxJQVc1QjtFQUFBLElBWDZCO0lBQ2pDOFosUUFBUTtJQUNSQyxpQkFBaUIsR0FBRyxFQUFFO0lBQ3RCQyxVQUFVLEdBQUcsS0FBSztJQUNsQmxVLFFBQVE7SUFDUmxHLEtBQUs7SUFDTCtHLFFBQVE7SUFDUitRLGFBQWE7SUFDYkMsS0FBSztJQUNMRSxVQUFVO0lBQ1YsR0FBR29DO0VBQ0wsQ0FBQyxHQUFBamEsSUFBQTtFQUNDLE1BQU1rYSxZQUFZLEdBQUdOLDhDQUFNLENBQUNFLFFBQVEsQ0FBQ3JhLElBQUksQ0FBQztFQUMxQyxNQUFNMGEsYUFBYSxHQUFHUixnREFBUSxDQUFDRyxRQUFRLENBQUM7RUFDeEMsTUFBTTdDLFVBQVUsR0FBRzZDLFFBQVEsQ0FBQ00sU0FBUztFQUNyQyxNQUFNQyxpQkFBaUIsR0FBR1AsUUFBUSxDQUFDUSxtQkFBbUI7RUFFdEQsTUFBTUMsZUFBZSxHQUNuQlQsUUFBUSxDQUFDdkMsTUFBTSxFQUFFMUosR0FBRyxDQUFFcEksR0FBRyxLQUFNO0lBQzdCZ0csS0FBSyxFQUFFaEcsR0FBRyxDQUFDZ0csS0FBSztJQUNoQjdMLEtBQUssRUFBRTZGLEdBQUcsQ0FBQ2xFLEVBQUUsQ0FBQ2laLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7RUFFWCxNQUFNQyx3QkFBd0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFalYsR0FBRyxLQUFLO0lBQ2pELE1BQU1rVixVQUFVLEdBQUcvYSxLQUFLLElBQUksRUFBRTtJQUM5QixNQUFNZ2IsbUJBQW1CLEdBQUdELFVBQVUsQ0FBQ3RaLE1BQU0sS0FBS2daLGlCQUFpQjtJQUNuRSxJQUFJOUYsUUFBUTtJQUVaLElBQUltRyxPQUFPLEVBQUU7TUFDWG5HLFFBQVEsR0FBR3FHLG1CQUFtQixHQUFHRCxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEVBQUVsVixHQUFHLENBQUM7SUFDcEUsQ0FBQyxNQUFNO01BQ0w4TyxRQUFRLEdBQUdvRyxVQUFVLENBQUNyYixNQUFNLENBQUV1YixDQUFDLElBQUtBLENBQUMsS0FBS3BWLEdBQUcsQ0FBQztJQUNoRDtJQUVBaVMsYUFBYSxDQUFDd0MsWUFBWSxFQUFFM0YsUUFBUSxDQUFDO0VBQ3ZDLENBQUM7RUFFRCxvQkFDRTNQLHNEQUFBO0lBRUVyRCxFQUFFLEVBQUUsR0FBRzJZLFlBQVksWUFBYTtJQUNoQ25VLFNBQVMsRUFBRWdVLGlCQUFrQjtJQUFBalUsUUFBQSxlQUU3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUNWd0IsUUFBUSxFQUFFZCxVQUFXO01BQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO01BQ3JCZ0MsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUE3UixRQUFBLGdCQUVibEIsc0RBQUEsQ0FBQzhVLG9EQUFTO1FBQUE1VCxRQUFBLEVBQUVxVTtNQUFhLENBQVksQ0FBQyxFQUNyQ3hDLEtBQUssaUJBQUkvUyxzREFBQSxDQUFDNlUseURBQWM7UUFBQTNULFFBQUEsRUFBRStSLFVBQVUsSUFBSTtNQUFHLENBQWlCLENBQUMsZUFDOURqVCxzREFBQSxDQUFDNFUsb0RBQVM7UUFBQTFULFFBQUEsRUFDUHlVLGVBQWUsQ0FBQzFNLEdBQUcsQ0FBRWtOLEVBQUUsaUJBQ3RCblcsc0RBQUEsQ0FBQzJVLDJEQUFnQjtVQUVmOVosSUFBSSxFQUFFeWEsWUFBYTtVQUNuQmMsT0FBTyxlQUNMcFcsc0RBQUEsQ0FBQ3lVLG1EQUFRO1lBQ1BxQixPQUFPLEVBQUU5YSxLQUFLLEVBQUVxYixRQUFRLENBQUNGLEVBQUUsQ0FBQ25iLEtBQUssQ0FBRTtZQUNuQytHLFFBQVEsRUFBR3VVLEVBQUUsSUFDWFQsd0JBQXdCLENBQUNTLEVBQUUsQ0FBQ3BULE1BQU0sQ0FBQzRTLE9BQU8sRUFBRUssRUFBRSxDQUFDbmIsS0FBSztZQUV0RDtZQUFBLEdBQ0lxYTtVQUFJLENBQ1QsQ0FDRjtVQUNEeE8sS0FBSyxFQUFFc1AsRUFBRSxDQUFDdFA7UUFBTSxHQVpYc1AsRUFBRSxDQUFDdFAsS0FhVCxDQUNGO01BQUMsQ0FDTyxDQUFDLEVBQ1gzRixRQUFRO0lBQUEsQ0FDRTtFQUFDLEdBaENUb1UsWUFpQ0YsQ0FBQztBQUVWLENBQUM7QUFFREwseUJBQXlCLENBQUNqVCxTQUFTLEdBQUc7RUFDcENrVCxRQUFRLEVBQUU3ViwwREFBZ0IsQ0FBQ2dULFVBQVU7RUFDckNyWCxLQUFLLEVBQUVxRSx5REFBZTtFQUN0QjhWLGlCQUFpQixFQUFFOVYsMERBQWdCO0VBQ25DK1YsVUFBVSxFQUFFL1Ysd0RBQWM7RUFDMUIwQyxRQUFRLEVBQUUxQyx3REFBYyxDQUFDZ1QsVUFBVTtFQUNuQ25SLFFBQVEsRUFBRTdCLHdEQUFjO0VBQ3hCeVQsYUFBYSxFQUFFelQsd0RBQWM7RUFDN0IwVCxLQUFLLEVBQUUxVCx3REFBYztFQUNyQjRULFVBQVUsRUFBRTVULDBEQUFnQnFMO0FBQzlCLENBQUM7QUFFRCxpRUFBZXVLLHlCQUF5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHZDtBQUNTO0FBTVo7QUFDbUQ7QUFDL0I7QUFBQTtBQUUzQyxNQUFNeUIscUJBQXFCLEdBQUd0YixJQUFBLElBVXhCO0VBQUEsSUFWeUI7SUFDN0I4WixRQUFRO0lBQ1JDLGlCQUFpQixHQUFHLEVBQUU7SUFDdEJDLFVBQVUsR0FBRyxLQUFLO0lBQ2xCbFUsUUFBUTtJQUNSbEcsS0FBSztJQUNMK1gsS0FBSztJQUNMRSxVQUFVO0lBQ1ZILGFBQWE7SUFDYixHQUFHdUM7RUFDTCxDQUFDLEdBQUFqYSxJQUFBO0VBQ0MsTUFBTWthLFlBQVksR0FBR04sOENBQU0sQ0FBQ0UsUUFBUSxDQUFDcmEsSUFBSSxDQUFDO0VBQzFDLE1BQU0wYSxhQUFhLEdBQUdSLGdEQUFRLENBQUNHLFFBQVEsQ0FBQztFQUN4QyxNQUFNN0MsVUFBVSxHQUFHNkMsUUFBUSxDQUFDTSxTQUFTO0VBRXJDLG9CQUNFeFYsc0RBQUE7SUFFRXJELEVBQUUsRUFBRSxHQUFHMlksWUFBWSxZQUFhO0lBQ2hDblUsU0FBUyxFQUFFZ1UsaUJBQWtCO0lBQUFqVSxRQUFBLGVBRTdCaEIsdURBQUEsQ0FBQ3dVLHNEQUFXO01BQUNMLFNBQVM7TUFBQ3RCLEtBQUssRUFBRUEsS0FBTTtNQUFBN1IsUUFBQSxnQkFDbENsQixzREFBQSxDQUFDMlUsMkRBQWdCO1FBQ2Z5QixPQUFPLGVBQ0xwVyxzREFBQSxDQUFDeVUsbURBQVE7VUFDUDVaLElBQUksRUFBRXlhLFlBQWE7VUFDbkJRLE9BQU8sRUFBRSxDQUFDLENBQUM5YSxLQUFNO1VBQ2pCNkwsS0FBSyxlQUFFN0csc0RBQUEsQ0FBQ3lXLDRGQUFPO1lBQUF2VixRQUFBLEVBQUVxVTtVQUFhLENBQVU7VUFDeEM7VUFBQSxHQUNJRjtRQUFJLENBQ1QsQ0FDRjtRQUNEeE8sS0FBSyxlQUFFN0csc0RBQUEsQ0FBQ3lXLDRGQUFPO1VBQUF2VixRQUFBLEVBQUVxVTtRQUFhLENBQVUsQ0FBRTtRQUMxQ1csUUFBUSxFQUFFZCxVQUFXO1FBQ3JCZCxRQUFRLEVBQUVqQztNQUFXLENBQ3RCLENBQUMsRUFDRG5SLFFBQVEsRUFDUjZSLEtBQUssaUJBQUkvUyxzREFBQSxDQUFDNlUseURBQWM7UUFBQTNULFFBQUEsRUFBRStSLFVBQVUsSUFBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRDtFQUFDLEdBckJUcUMsWUFzQkYsQ0FBQztBQUVWLENBQUM7QUFFRG9CLHFCQUFxQixDQUFDMVUsU0FBUyxHQUFHO0VBQ2hDa1QsUUFBUSxFQUFFN1YsMERBQWdCLENBQUNnVCxVQUFVO0VBQ3JDclgsS0FBSyxFQUFFcUUsd0RBQWM7RUFDckI4VixpQkFBaUIsRUFBRTlWLDBEQUFnQjtFQUNuQytWLFVBQVUsRUFBRS9WLHdEQUFjO0VBQzFCNkIsUUFBUSxFQUFFN0Isd0RBQWM7RUFDeEJ5VCxhQUFhLEVBQUV6VCx3REFBYztFQUM3QjBULEtBQUssRUFBRTFULHdEQUFjO0VBQ3JCNFQsVUFBVSxFQUFFNVQsMERBQWdCcUw7QUFDOUIsQ0FBQztBQUVELGlFQUFlZ00scUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pFVjtBQUNTO0FBQ3VDO0FBQy9CO0FBQUE7QUFFM0MsTUFBTUkscUJBQXFCLEdBQUcxYixJQUFBLElBU3hCO0VBQUEsSUFUeUI7SUFDN0I4WixRQUFRO0lBQ1JDLGlCQUFpQixHQUFHLEVBQUU7SUFDdEJDLFVBQVUsR0FBRyxLQUFLO0lBQ2xCdEMsYUFBYTtJQUNiNVIsUUFBUTtJQUNSNlIsS0FBSztJQUNMRSxVQUFVO0lBQ1YsR0FBR29DO0VBQ0wsQ0FBQyxHQUFBamEsSUFBQTtFQUNDLE1BQU1rYSxZQUFZLEdBQUdOLDhDQUFNLENBQUNFLFFBQVEsQ0FBQ3JhLElBQUksQ0FBQztFQUMxQyxNQUFNMGEsYUFBYSxHQUFHUixnREFBUSxDQUFDRyxRQUFRLENBQUM7RUFDeEMsTUFBTTdDLFVBQVUsR0FBRzZDLFFBQVEsQ0FBQ00sU0FBUztFQUVyQyxNQUFNRyxlQUFlLEdBQ25CVCxRQUFRLENBQUN2QyxNQUFNLEVBQUUxSixHQUFHLENBQUVwSSxHQUFHLEtBQU07SUFDN0JnRyxLQUFLLEVBQUVoRyxHQUFHLENBQUNnRyxLQUFLO0lBQ2hCN0wsS0FBSyxFQUFFNkYsR0FBRyxDQUFDbEU7RUFDYixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7RUFFWCxvQkFDRXFELHNEQUFBO0lBRUVyRCxFQUFFLEVBQUUsR0FBRzJZLFlBQVksWUFBYTtJQUNoQ25VLFNBQVMsRUFBRWdVLGlCQUFrQjtJQUFBalUsUUFBQSxlQUU3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUNWd0IsUUFBUSxFQUFFZCxVQUFXO01BQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO01BQ3JCZ0MsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUE3UixRQUFBLGdCQUVibEIsc0RBQUEsQ0FBQzJXLHFEQUFVO1FBQUNoYSxFQUFFLEVBQUUsR0FBRzJZLFlBQVksUUFBUztRQUFBcFUsUUFBQSxFQUFFcVU7TUFBYSxDQUFhLENBQUMsZUFDckV2VixzREFBQSxDQUFDNlcsaURBQU07UUFDTEUsT0FBTyxFQUFFLEdBQUd6QixZQUFZLFFBQVM7UUFDakN6YSxJQUFJLEVBQUV5YSxZQUFhO1FBQ25CM1ksRUFBRSxFQUFFMlksWUFBYTtRQUNqQnpPLEtBQUssRUFBRTBPO1FBQ1A7UUFBQSxHQUNJRixJQUFJO1FBQ1I5RyxLQUFLLEVBQUU7VUFBRXlJLFlBQVksRUFBRTtRQUFHLENBQUU7UUFBQTlWLFFBQUEsRUFFM0J5VSxlQUFlLENBQUMxTSxHQUFHLENBQUVrTixFQUFFLGlCQUN0Qm5XLHNEQUFBLENBQUM0VyxtREFBUTtVQUFnQjViLEtBQUssRUFBRW1iLEVBQUUsQ0FBQ25iLEtBQU07VUFBQWtHLFFBQUEsRUFDdENpVixFQUFFLENBQUN0UDtRQUFLLEdBRElzUCxFQUFFLENBQUN0UCxLQUVSLENBQ1g7TUFBQyxDQUNJLENBQUMsRUFDUjNGLFFBQVE7SUFBQSxDQUNFO0VBQUMsR0EzQlRvVSxZQTRCRixDQUFDO0FBRVYsQ0FBQztBQUVEd0IscUJBQXFCLENBQUM5VSxTQUFTLEdBQUc7RUFDaENrVCxRQUFRLEVBQUU3ViwwREFBZ0IsQ0FBQ2dULFVBQVU7RUFDckM4QyxpQkFBaUIsRUFBRTlWLDBEQUFnQjtFQUNuQytWLFVBQVUsRUFBRS9WLHdEQUFjO0VBQzFCNkIsUUFBUSxFQUFFN0Isd0RBQWM7RUFDeEIwVCxLQUFLLEVBQUUxVCx3REFBYztFQUNyQjRULFVBQVUsRUFBRTVULDBEQUFnQjtFQUM1QnlULGFBQWEsRUFBRXpULHdEQUFjNEM7QUFDL0IsQ0FBQztBQUVELGlFQUFlNlUscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JFVjtBQUNTO0FBUVo7QUFDb0I7QUFBQTtBQUUzQyxNQUFNSyxzQkFBc0IsR0FBRy9iLElBQUEsSUFTekI7RUFBQSxJQVQwQjtJQUM5QjhaLFFBQVE7SUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtJQUN0QkMsVUFBVSxHQUFHLEtBQUs7SUFDbEJsVSxRQUFRO0lBQ1I2UixLQUFLO0lBQ0xFLFVBQVU7SUFDVkgsYUFBYTtJQUNiLEdBQUd1QztFQUNMLENBQUMsR0FBQWphLElBQUE7RUFDQyxNQUFNa2EsWUFBWSxHQUFHTiw4Q0FBTSxDQUFDRSxRQUFRLENBQUNyYSxJQUFJLENBQUM7RUFDMUMsTUFBTTBhLGFBQWEsR0FBR1IsZ0RBQVEsQ0FBQ0csUUFBUSxDQUFDO0VBQ3hDLE1BQU03QyxVQUFVLEdBQUc2QyxRQUFRLENBQUNNLFNBQVM7RUFFckMsTUFBTUcsZUFBZSxHQUNuQlQsUUFBUSxDQUFDdkMsTUFBTSxFQUFFMUosR0FBRyxDQUFFcEksR0FBRyxLQUFNO0lBQzdCZ0csS0FBSyxFQUFFaEcsR0FBRyxDQUFDZ0csS0FBSztJQUNoQjdMLEtBQUssRUFBRTZGLEdBQUcsQ0FBQ2xFLEVBQUUsQ0FBQ2laLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7RUFFWCxvQkFDRTVWLHNEQUFBO0lBRUVyRCxFQUFFLEVBQUUsR0FBRzJZLFlBQVksWUFBYTtJQUNoQ25VLFNBQVMsRUFBRWdVLGlCQUFrQjtJQUFBalUsUUFBQSxlQUU3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUNWd0IsUUFBUSxFQUFFZCxVQUFXO01BQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO01BQ3JCZ0MsU0FBUztNQUNUdEIsS0FBSyxFQUFFQSxLQUFNO01BQUE3UixRQUFBLGdCQUVibEIsc0RBQUEsQ0FBQzhVLG9EQUFTO1FBQUNuWSxFQUFFLEVBQUUsR0FBRzJZLFlBQVksUUFBUztRQUFBcFUsUUFBQSxFQUFFcVU7TUFBYSxDQUFZLENBQUMsRUFDbEV4QyxLQUFLLGlCQUFJL1Msc0RBQUEsQ0FBQzZVLHlEQUFjO1FBQUEzVCxRQUFBLEVBQUUrUixVQUFVLElBQUk7TUFBRyxDQUFpQixDQUFDLGVBQzlEalQsc0RBQUEsQ0FBQ2tYLHFEQUFVO1FBQ1QsbUJBQWlCLEdBQUc1QixZQUFZLFFBQVM7UUFDekN6YSxJQUFJLEVBQUV5YTtRQUNOO1FBQUEsR0FDSUQsSUFBSTtRQUFBblUsUUFBQSxFQUVQeVUsZUFBZSxDQUFDMU0sR0FBRyxDQUFFa04sRUFBRSxpQkFDdEJuVyxzREFBQSxDQUFDMlUsMkRBQWdCO1VBRWYzWixLQUFLLEVBQUVtYixFQUFFLENBQUNuYixLQUFNO1VBQ2hCb2IsT0FBTyxlQUFFcFcsc0RBQUEsQ0FBQ2lYLGdEQUFLLElBQUUsQ0FBRTtVQUNuQnBRLEtBQUssRUFBRXNQLEVBQUUsQ0FBQ3RQO1FBQU0sR0FIWHNQLEVBQUUsQ0FBQ3RQLEtBSVQsQ0FDRjtNQUFDLENBQ1EsQ0FBQyxFQUNaM0YsUUFBUTtJQUFBLENBQ0U7RUFBQyxHQTVCVG9VLFlBNkJGLENBQUM7QUFFVixDQUFDO0FBRUQ2QixzQkFBc0IsQ0FBQ25WLFNBQVMsR0FBRztFQUNqQ2tULFFBQVEsRUFBRTdWLDBEQUFnQixDQUFDZ1QsVUFBVTtFQUNyQzhDLGlCQUFpQixFQUFFOVYsMERBQWdCO0VBQ25DK1YsVUFBVSxFQUFFL1Ysd0RBQWM7RUFDMUI2QixRQUFRLEVBQUU3Qix3REFBYztFQUN4QjBULEtBQUssRUFBRTFULHdEQUFjO0VBQ3JCNFQsVUFBVSxFQUFFNVQsMERBQWdCO0VBQzVCeVQsYUFBYSxFQUFFelQsd0RBQWM0QztBQUMvQixDQUFDO0FBRUQsaUVBQWVrVixzQkFBc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0VYO0FBQ1M7QUFDa0I7QUFDVjtBQUFBO0FBRTNDLE1BQU1DLGlCQUFpQixHQUFHaGMsSUFBQSxJQU9wQjtFQUFBLElBUHFCO0lBQ3pCOFosUUFBUTtJQUNSQyxpQkFBaUIsR0FBRyxFQUFFO0lBQ3RCQyxVQUFVLEdBQUcsS0FBSztJQUNsQmxVLFFBQVE7SUFDUjRSLGFBQWE7SUFDYixHQUFHdUM7RUFDTCxDQUFDLEdBQUFqYSxJQUFBO0VBQ0MsTUFBTWthLFlBQVksR0FBR04sOENBQU0sQ0FBQ0UsUUFBUSxDQUFDcmEsSUFBSSxDQUFDO0VBQzFDLE1BQU0wYSxhQUFhLEdBQUdSLGdEQUFRLENBQUNHLFFBQVEsQ0FBQztFQUN4QyxNQUFNN0MsVUFBVSxHQUFHNkMsUUFBUSxDQUFDTSxTQUFTO0VBRXJDLG9CQUNFeFYsc0RBQUE7SUFFRXJELEVBQUUsRUFBRSxHQUFHMlksWUFBWSxZQUFhO0lBQ2hDblUsU0FBUyxFQUFFZ1UsaUJBQWtCO0lBQUFqVSxRQUFBLGVBRTdCaEIsdURBQUEsQ0FBQzBVLG9EQUFTO01BQUExVCxRQUFBLGdCQUNSbEIsc0RBQUEsQ0FBQzhSLG9EQUFTO1FBQ1JqWCxJQUFJLEVBQUV5YSxZQUFhO1FBQ25Cek8sS0FBSyxFQUFFME8sYUFBYztRQUNyQlcsUUFBUSxFQUFFZCxVQUFXO1FBQ3JCZCxRQUFRLEVBQUVqQyxVQUFXO1FBQ3JCZ0MsU0FBUztRQUNUO1FBQUEsR0FDSWdCO01BQUksQ0FDVCxDQUFDLEVBQ0RuVSxRQUFRO0lBQUEsQ0FDQTtFQUFDLEdBZlBvVSxZQWdCRixDQUFDO0FBRVYsQ0FBQztBQUVEOEIsaUJBQWlCLENBQUNwVixTQUFTLEdBQUc7RUFDNUJrVCxRQUFRLEVBQUU3ViwwREFBZ0IsQ0FBQ2dULFVBQVU7RUFDckM4QyxpQkFBaUIsRUFBRTlWLDBEQUFnQjtFQUNuQytWLFVBQVUsRUFBRS9WLHdEQUFjO0VBQzFCNkIsUUFBUSxFQUFFN0Isd0RBQWM7RUFDeEJ5VCxhQUFhLEVBQUV6VCx3REFBYzRDO0FBQy9CLENBQUM7QUFFRCxpRUFBZW1WLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pDVjtBQUVmLE1BQU1NLFNBQVMsR0FBR0EsQ0FBQzFjLEtBQUssRUFBRTJjLElBQUksS0FBSztFQUN4QyxNQUFNaEYsTUFBTSxHQUFHZ0YsSUFBSSxDQUFDQyxhQUFhO0VBRWpDLElBQUksQ0FBQzVjLEtBQUssRUFBRSxPQUFPLEtBQUs7RUFFeEIsSUFBSTZjLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOWMsS0FBSyxDQUFDLEVBQUU7SUFDeEIsSUFBSSxDQUFDQSxLQUFLLENBQUN5QixNQUFNLEVBQUUsT0FBTyxLQUFLO0lBQy9CLElBQUkrTCxHQUFHLEdBQUdtUCxJQUFJLENBQUNJLHNCQUFzQixLQUFLLEtBQUs7SUFDL0NwRixNQUFNLENBQUNxRixPQUFPLENBQUUvQixDQUFDLElBQUs7TUFDcEIsSUFBSTBCLElBQUksQ0FBQ0ksc0JBQXNCLEtBQUssS0FBSyxFQUFFO1FBQ3pDdlAsR0FBRyxHQUFHQSxHQUFHLElBQUl4TixLQUFLLENBQUNxYixRQUFRLENBQUNKLENBQUMsQ0FBQztNQUNoQyxDQUFDLE1BQU07UUFDTDtRQUNBek4sR0FBRyxHQUFHQSxHQUFHLElBQUl4TixLQUFLLENBQUNxYixRQUFRLENBQUNKLENBQUMsQ0FBQztNQUNoQztJQUNGLENBQUMsQ0FBQztJQUNGLE9BQU96TixHQUFHO0VBQ1o7RUFDQSxPQUFPbUssTUFBTSxDQUFDMEQsUUFBUSxDQUFDcmIsS0FBSyxFQUFFNGEsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRU0sTUFBTXFDLGVBQWUsR0FBR0EsQ0FBQ04sSUFBSSxFQUFFTyxVQUFVLEVBQUVoWCxRQUFRLEtBQUs7RUFDN0QsSUFBSXlXLElBQUksQ0FBQ1EsVUFBVSxLQUFLLFNBQVMsRUFBRTtJQUNqQyxJQUFJUixJQUFJLENBQUNTLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtNQUN6QyxJQUFJRixVQUFVLEVBQUUsT0FBT2hYLFFBQVE7TUFDL0IsT0FBTyxJQUFJO0lBQ2I7SUFDQTtJQUNBLElBQUksQ0FBQ2dYLFVBQVUsRUFBRTtNQUNmLE9BQU9oWCxRQUFRO0lBQ2pCO0lBQ0EsT0FBTyxJQUFJO0VBQ2I7RUFDQTtFQUNBLElBQUl5VyxJQUFJLENBQUNTLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtJQUN6QyxJQUFJLENBQUNGLFVBQVUsRUFBRSxPQUFPaFgsUUFBUTtJQUNoQyxPQUFPLElBQUk7RUFDYjtFQUNBLElBQUlnWCxVQUFVLEVBQUUsT0FBT2hYLFFBQVE7RUFDL0IsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVNLE1BQU04VCxNQUFNLEdBQUlxRCxJQUFJLElBQUs7RUFDOUIsTUFBTUMsTUFBTSxHQUFHRCxJQUFJLENBQUNFLFdBQVcsQ0FBQyxDQUFDO0VBQ2pDLE9BQU9ELE1BQU0sQ0FBQ0UsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQztBQUM5QyxDQUFDO0FBRU0sTUFBTXpELFFBQVEsR0FBSTBELENBQUM7QUFDeEI7QUFDQUEsQ0FBQyxFQUFFNVIsS0FBSyxFQUFFMlIsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQztBQUV4RCxNQUFNRSxVQUFVLEdBQUlDLE1BQU0sSUFBSztFQUNwQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLEtBQUs7RUFDekI7RUFDQSxJQUFJZCxLQUFLLENBQUNDLE9BQU8sQ0FBQ2EsTUFBTSxDQUFDLEVBQUUsT0FBT0EsTUFBTSxDQUFDbGMsTUFBTSxHQUFHLENBQUM7RUFDbkQsSUFBSSxPQUFPa2MsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPQSxNQUFNLENBQUNsYyxNQUFNLEdBQUcsQ0FBQztFQUN4RCxJQUFJLE9BQU9rYyxNQUFNLEtBQUssUUFBUSxFQUFFLE9BQU9BLE1BQU0sR0FBRyxDQUFDO0VBQ2pELElBQUksT0FBT0EsTUFBTSxLQUFLLFNBQVMsRUFBRSxPQUFPQSxNQUFNO0VBQzlDLE9BQU8sS0FBSztBQUNkLENBQUM7QUFFTSxNQUFNQyxpQkFBaUIsR0FBR0EsQ0FBQ0QsTUFBTSxFQUFFRSxVQUFVLEtBQUs7RUFDdkQsTUFBTUMsV0FBVyxHQUFHakIsS0FBSyxDQUFDQyxPQUFPLENBQUNhLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLEdBQUcsQ0FBQ0EsTUFBTSxDQUFDO0VBRTdELE9BQU9HLFdBQVcsQ0FBQzVFLElBQUksQ0FBRStCLENBQUMsSUFBSztJQUM3QixJQUFJNEIsS0FBSyxDQUFDQyxPQUFPLENBQUNlLFVBQVUsQ0FBQyxFQUFFO01BQzdCLE9BQU9BLFVBQVUsQ0FBQ3hDLFFBQVEsQ0FBQ0osQ0FBQyxDQUFDO0lBQy9CO0lBQ0EsT0FBT0EsQ0FBQyxLQUFLNEMsVUFBVTtFQUN6QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRU0sTUFBTUUsbUJBQW1CLEdBQUlOLENBQUMsSUFBSztFQUN4QyxRQUFRQSxDQUFDLENBQUM5ZCxJQUFJO0lBQ1osS0FBSzBjLDZEQUFxQjtNQUN4QixPQUFPLEtBQUs7SUFDZCxLQUFLSSxvRUFBNEI7TUFDL0IsT0FBTyxJQUFJO0lBQ2IsS0FBS0gsaUVBQXlCO01BQzVCLE9BQU8sRUFBRTtJQUNYLEtBQUtFLG9FQUE0QjtJQUNqQyxLQUFLRCw2REFBcUI7TUFDeEIsT0FBTyxFQUFFO0lBQ1g7TUFDRSxPQUFPLEVBQUU7RUFDYjtBQUNGLENBQUM7QUFFTSxNQUFNeUIsWUFBWSxHQUFHQSxDQUFDQyxHQUFHLEVBQUV0ZSxJQUFJLEtBQUs7RUFDekMsUUFBUUEsSUFBSTtJQUNWLEtBQUswYyw2REFBcUI7TUFDeEIsT0FBTzRCLEdBQUcsS0FBSyxNQUFNO0lBQ3ZCLEtBQUszQixpRUFBeUI7TUFDNUIsT0FBTzJCLEdBQUcsRUFBRUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7SUFDOUIsS0FBSzFCLG9FQUE0QjtJQUNqQyxLQUFLRCw2REFBcUI7TUFDeEIsT0FBTzBCLEdBQUcsSUFBSSxFQUFFO0lBQ2xCLEtBQUt4QixvRUFBNEI7TUFDL0IsT0FBT3dCLEdBQUcsSUFBSSxJQUFJO0lBQ3BCO01BQ0UsT0FBT0EsR0FBRztFQUNkO0FBQ0YsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUdNLE1BQU1FLGlCQUFpQixHQUFHLE1BQU07QUFDaEMsTUFBTUMscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNL0IscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNSSw0QkFBNEIsR0FBRyxpQkFBaUI7QUFDdEQsTUFBTUYscUJBQXFCLEdBQUcsVUFBVTtBQUN4QyxNQUFNRCx5QkFBeUIsR0FBRyxjQUFjO0FBQ2hELE1BQU1FLDRCQUE0QixHQUFHLGlCQUFpQjtBQUN0RCxNQUFNNkIsd0JBQXdCLEdBQUcsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUHJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQU9QO0FBU1A7QUFDMEM7QUFDUTtBQUNFO0FBQ007QUFDUjtBQUFBO0FBRXZFLE1BQU1DLHlCQUF5QixHQUFJQyxZQUFZLElBQUs7RUFDbEQsUUFBUUEsWUFBWTtJQUNsQixLQUFLSCw2REFBcUI7SUFDMUIsS0FBS0QseURBQWlCO01BQUU7UUFDdEIsT0FBTy9CLHFFQUFpQjtNQUMxQjtJQUNBLEtBQUtDLDZEQUFxQjtNQUFFO1FBQzFCLE9BQU9YLHlFQUFxQjtNQUM5QjtJQUNBLEtBQUtlLG9FQUE0QjtNQUFFO1FBQ2pDLE9BQU9OLDBFQUFzQjtNQUMvQjtJQUNBLEtBQUtHLGlFQUF5QjtNQUFFO1FBQzlCLE9BQU9yQyw2RUFBeUI7TUFDbEM7SUFDQSxLQUFLdUMsb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUFFO1FBQzFCLE9BQU9ULHlFQUFxQjtNQUM5QjtJQUNBO01BQVM7UUFDUCxPQUFPM1gsdURBQWM7TUFDdkI7RUFDRjtBQUNGLENBQUM7QUFFRCxNQUFNcWEsb0JBQW9CLEdBQUdwZSxJQUFBLElBT3ZCO0VBQUEsSUFQd0I7SUFDNUIxQixjQUFjO0lBQ2R5SCxTQUFTLEdBQUcsZ0JBQWdCO0lBQzVCZ1UsaUJBQWlCLEdBQUcsZUFBZTtJQUNuQ3NFLFFBQVEsR0FBRyxLQUFLO0lBQ2hCQyxTQUFTLEdBQUcsSUFBSTtJQUNoQnZIO0VBQ0YsQ0FBQyxHQUFBL1csSUFBQTtFQUNDLE1BQU11ZSxVQUFVLEdBQUdBLENBQUNoQyxJQUFJLEVBQUVyQyxZQUFZLEtBQ3BDMkMsa0VBQWUsQ0FDYk4sSUFBSSxFQUNKRCw0REFBUyxDQUFDdkYsTUFBTSxDQUFDUSxNQUFNLENBQUMyQyxZQUFZLENBQUMsRUFBRXFDLElBQUksQ0FBQztFQUM1QztFQUNBaUMsY0FBYyxDQUFDakMsSUFBSSxDQUFDa0MsWUFBWSxDQUNsQyxDQUFDO0VBRUgsTUFBTUQsY0FBYyxHQUFJbkIsQ0FBQyxJQUFLO0lBQzVCLE1BQU1uRCxZQUFZLEdBQUdOLHlEQUFNLENBQUN5RCxDQUFDLENBQUM1ZCxJQUFJLENBQUM7SUFDbkM7SUFDQSxNQUFNdWEsVUFBVSxHQUNiLENBQUNzRSxTQUFTLElBQUloQiw2REFBVSxDQUFDdkcsTUFBTSxDQUFDUSxNQUFNLENBQUMyQyxZQUFZLENBQUMsQ0FBQyxJQUFLbUUsUUFBUTtJQUNyRSxNQUFNSyxzQkFBc0IsR0FBR1IseUJBQXlCLENBQUNiLENBQUMsQ0FBQzlkLElBQUksQ0FBQztJQUVoRSxNQUFNb2YsV0FBVyxHQUFHO01BQ2xCL2UsS0FBSyxFQUFFbVgsTUFBTSxDQUFDUSxNQUFNLENBQUMyQyxZQUFZLENBQUM7TUFDbEN2VCxRQUFRLEVBQUVvUSxNQUFNLENBQUMxQyxZQUFZO01BQzdCZ0UsTUFBTSxFQUFFdEIsTUFBTSxDQUFDNkgsVUFBVTtNQUN6QmpILEtBQUssRUFDSFosTUFBTSxDQUFDUyxPQUFPLENBQUMwQyxZQUFZLENBQUMsSUFBSXRDLE9BQU8sQ0FBQ2IsTUFBTSxDQUFDTyxNQUFNLENBQUM0QyxZQUFZLENBQUMsQ0FBQztNQUN0RXJDLFVBQVUsRUFBRWQsTUFBTSxDQUFDUyxPQUFPLENBQUMwQyxZQUFZLENBQUMsSUFBSW5ELE1BQU0sQ0FBQ08sTUFBTSxDQUFDNEMsWUFBWSxDQUFDO01BQ3ZFeEMsYUFBYSxFQUFFWCxNQUFNLENBQUNXO0lBQ3hCLENBQUM7SUFFRCxvQkFDRTlTLHNEQUFBLENBQUM4WixzQkFBc0I7TUFFckI1RSxRQUFRLEVBQUV1RCxDQUFFO01BQ1p0RCxpQkFBaUIsRUFBRUEsaUJBQWtCO01BQ3JDQyxVQUFVLEVBQUVBO01BQ1o7TUFBQSxHQUNJMkUsV0FBVztNQUFBN1ksUUFBQSxFQUVkdVgsQ0FBQyxDQUFDd0Isa0JBQWtCLEVBQUVoUixHQUFHLENBQUUwTyxJQUFJLElBQUtnQyxVQUFVLENBQUNoQyxJQUFJLEVBQUVyQyxZQUFZLENBQUM7SUFBQyxHQVAvREEsWUFRaUIsQ0FBQztFQUU3QixDQUFDO0VBRUQsb0JBQU90VixzREFBQTtJQUFLbUIsU0FBUyxFQUFFQSxTQUFVO0lBQUFELFFBQUEsRUFBRXhILGNBQWMsQ0FBQ3VQLEdBQUcsQ0FBQzJRLGNBQWM7RUFBQyxDQUFNLENBQUM7QUFDOUUsQ0FBQztBQUVESixvQkFBb0IsQ0FBQ3hYLFNBQVMsR0FBRztFQUMvQnRJLGNBQWMsRUFBRTJGLHlEQUFlLENBQUNnVCxVQUFVO0VBQzFDbFIsU0FBUyxFQUFFOUIsMERBQWdCO0VBQzNCOFYsaUJBQWlCLEVBQUU5ViwwREFBZ0I7RUFDbkNxYSxTQUFTLEVBQUVyYSx3REFBYztFQUN6Qm9hLFFBQVEsRUFBRXBhLHdEQUFjdVA7QUFDMUIsQ0FBQztBQUVELGlFQUFlNEssb0JBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hIVDtBQUNTO0FBT1o7QUFDbUQ7QUFDbkI7QUFFUjtBQUFBO0FBRS9DLE1BQU1VLHNCQUFzQixHQUFHOWUsSUFBQSxJQUt6QjtFQUFBLElBTDBCO0lBQzlCK2UsVUFBVTtJQUNWaEksTUFBTTtJQUNOaUQsVUFBVSxHQUFHLEtBQUs7SUFDbEIvQyxVQUFVLEdBQUc7RUFDZixDQUFDLEdBQUFqWCxJQUFBO0VBQ0MsTUFBTVAsSUFBSSxHQUFHekIsNERBQW9CLENBQUNLLGtCQUFrQjtFQUNwRCxNQUFNO0lBQUVpWixNQUFNO0lBQUVDLE1BQU07SUFBRUMsT0FBTztJQUFFbkQsWUFBWTtJQUFFdUs7RUFBVyxDQUFDLEdBQUc3SCxNQUFNO0VBQ3BFLE1BQU1uWCxLQUFLLEdBQUcyWCxNQUFNLENBQUM5WCxJQUFJLENBQUM7RUFDMUIsTUFBTWtZLEtBQUssR0FBR0gsT0FBTyxDQUFDL1gsSUFBSSxDQUFDLElBQUltWSxPQUFPLENBQUNOLE1BQU0sQ0FBQzdYLElBQUksQ0FBQyxDQUFDO0VBQ3BELE1BQU1vWSxVQUFVLEdBQUdMLE9BQU8sQ0FBQy9YLElBQUksQ0FBQyxJQUFJNlgsTUFBTSxDQUFDN1gsSUFBSSxDQUFDO0VBRWhELG9CQUNFbUYsc0RBQUEsQ0FBQ3FDLDhDQUFHO0lBQUNsQixTQUFTLEVBQUVyQix3REFBZTtJQUFBb0IsUUFBQSxlQUM3QmhCLHVEQUFBLENBQUN3VSxzREFBVztNQUFDTCxTQUFTO01BQUN0QixLQUFLLEVBQUVBLEtBQU07TUFBQTdSLFFBQUEsZ0JBQ2xDbEIsc0RBQUEsQ0FBQzJVLDJEQUFnQjtRQUNmeUIsT0FBTyxlQUNMcFcsc0RBQUEsQ0FBQ3lVLG1EQUFRO1VBQ1A1WixJQUFJLEVBQUVBLElBQUs7VUFDWGliLE9BQU8sRUFBRSxDQUFDLENBQUM5YSxLQUFNO1VBQ2pCNkwsS0FBSyxlQUFFN0csc0RBQUEsQ0FBQ3lXLDRGQUFPO1lBQUF2VixRQUFBLEVBQUVpWjtVQUFVLENBQVUsQ0FBRTtVQUN2Q3BZLFFBQVEsRUFBRTBOLFlBQWE7VUFDdkJnRSxNQUFNLEVBQUV1RztRQUFXLENBQ3BCLENBQ0Y7UUFDRG5ULEtBQUssZUFBRTdHLHNEQUFBLENBQUN5Vyw0RkFBTztVQUFBdlYsUUFBQSxFQUFFaVo7UUFBVSxDQUFVLENBQUU7UUFDdkNqRSxRQUFRLEVBQUVkLFVBQVc7UUFDckJkLFFBQVEsRUFBRWpDO01BQVcsQ0FDdEIsQ0FBQyxFQUNEVSxLQUFLLGlCQUFJL1Msc0RBQUEsQ0FBQzZVLHlEQUFjO1FBQUEzVCxRQUFBLEVBQUUrUixVQUFVLElBQUk7TUFBRyxDQUFpQixDQUFDO0lBQUEsQ0FDbkQ7RUFBQyxDQUNYLENBQUM7QUFFVixDQUFDO0FBRURpSCxzQkFBc0IsQ0FBQ2xZLFNBQVMsR0FBRztFQUNqQ21ZLFVBQVUsRUFBRTlhLDBEQUFnQixDQUFDZ1QsVUFBVTtFQUN2Q0YsTUFBTSxFQUFFOVMsMERBQWdCLENBQUNnVCxVQUFVO0VBQ25DK0MsVUFBVSxFQUFFL1Ysd0RBQWM7RUFDMUJnVCxVQUFVLEVBQUVoVCx3REFBY3VQO0FBQzVCLENBQUM7QUFFRCxpRUFBZXNMLHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeERyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDTztBQUNLO0FBQUE7QUFFL0MsTUFBTUcsc0JBQXNCLEdBQUdqZixJQUFBLElBQWdCO0VBQUEsSUFBZjtJQUFFK1c7RUFBTyxDQUFDLEdBQUEvVyxJQUFBO0VBQ3hDLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLG9CQUNFVyx1REFBQSxDQUFBRSx1REFBQTtJQUFBYyxRQUFBLGdCQUNFbEIsc0RBQUEsQ0FBQzhSLG9EQUFTO01BQ1J1QyxTQUFTO01BQ1QxWCxFQUFFLEVBQUMsc0JBQXNCO01BQ3pCa0ssS0FBSyxFQUFFckcsQ0FBQyxDQUFDLDBCQUEwQixDQUFFO01BQ3JDeEYsS0FBSyxFQUFFbVgsTUFBTSxDQUFDUSxNQUFNLENBQUMySCxvQkFBcUI7TUFDMUN2WSxRQUFRLEVBQUVvUSxNQUFNLENBQUMxQyxZQUFhO01BQzlCZ0UsTUFBTSxFQUFFdEIsTUFBTSxDQUFDNkgsVUFBVztNQUMxQmpILEtBQUssRUFDSFosTUFBTSxDQUFDUyxPQUFPLENBQUMwSCxvQkFBb0IsSUFDbkN0SCxPQUFPLENBQUNiLE1BQU0sQ0FBQ08sTUFBTSxDQUFDNEgsb0JBQW9CLENBQzNDO01BQ0RySCxVQUFVLEVBQ1JkLE1BQU0sQ0FBQ1MsT0FBTyxDQUFDMEgsb0JBQW9CLElBQ25DbkksTUFBTSxDQUFDTyxNQUFNLENBQUM0SDtJQUNmLENBQ0YsQ0FBQyxlQUNGdGEsc0RBQUEsQ0FBQzhSLG9EQUFTO01BQ1J1QyxTQUFTO01BQ1QxWCxFQUFFLEVBQUMscUJBQXFCO01BQ3hCa0ssS0FBSyxFQUFFckcsQ0FBQyxDQUFDLHlCQUF5QixDQUFFO01BQ3BDeEYsS0FBSyxFQUFFbVgsTUFBTSxDQUFDUSxNQUFNLENBQUM0SCxtQkFBb0I7TUFDekN4WSxRQUFRLEVBQUVvUSxNQUFNLENBQUMxQyxZQUFhO01BQzlCZ0UsTUFBTSxFQUFFdEIsTUFBTSxDQUFDNkgsVUFBVztNQUMxQmpILEtBQUssRUFDSFosTUFBTSxDQUFDUyxPQUFPLENBQUMySCxtQkFBbUIsSUFDbEN2SCxPQUFPLENBQUNiLE1BQU0sQ0FBQ08sTUFBTSxDQUFDNkgsbUJBQW1CLENBQzFDO01BQ0R0SCxVQUFVLEVBQ1JkLE1BQU0sQ0FBQ1MsT0FBTyxDQUFDMkgsbUJBQW1CLElBQ2xDcEksTUFBTSxDQUFDTyxNQUFNLENBQUM2SDtJQUNmLENBQ0YsQ0FBQztFQUFBLENBQ0YsQ0FBQztBQUVQLENBQUM7QUFFREYsc0JBQXNCLENBQUNyWSxTQUFTLEdBQUc7RUFDakNtUSxNQUFNLEVBQUU5UywwREFBZ0IsQ0FBQ2dUO0FBQzNCLENBQUM7QUFFRCxpRUFBZWdJLHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0RyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRXlDO0FBQ047QUFDWTtBQUNTO0FBQ3JCO0FBQ1I7QUFDZ0M7QUFFUjtBQU1EO0FBT1A7QUFDb0I7QUFDVjtBQUNpQztBQUMvQjtBQUFBO0FBRXZELE1BQU1NLGlCQUFpQixHQUFHQSxDQUFDaGdCLElBQUksRUFBRUUsSUFBSSxFQUFFd1gsVUFBVSxLQUFLO0VBQ3BELElBQUl1SSxNQUFNO0VBQ1YsUUFBUWpnQixJQUFJO0lBQ1YsS0FBSzBjLGtGQUFxQjtNQUN4QnVELE1BQU0sR0FBR0gscUNBQVEsQ0FBQyxDQUFDLENBQUNJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDO01BQzFEO0lBQ0YsS0FBS3BELHlGQUE0QjtNQUMvQm1ELE1BQU0sR0FBR0gsdUNBQVUsQ0FBQyxTQUFTNWYsSUFBSSxFQUFFLENBQUM7TUFDcEM7SUFDRixLQUFLeWMsc0ZBQXlCO01BQzVCc0QsTUFBTSxHQUFHSCxzQ0FBUyxDQUFDLENBQUMsQ0FBQ0ssRUFBRSxDQUFDTCx1Q0FBVSxDQUFDLENBQUMsQ0FBQztNQUNyQztJQUNGLEtBQUtqRCx5RkFBNEI7SUFDakMsS0FBS0Qsa0ZBQXFCO01BQ3hCcUQsTUFBTSxHQUFHSCx1Q0FBVSxDQUFDLFNBQVM1ZixJQUFJLEVBQUUsQ0FBQztNQUNwQztJQUNGO01BQ0UrZixNQUFNLEdBQUdILHVDQUFVLENBQUMsU0FBUzVmLElBQUksRUFBRSxDQUFDO01BQ3BDO0VBQ0o7RUFFQSxJQUFJd1gsVUFBVSxFQUFFO0lBQ2R1SSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ3RHLFFBQVEsQ0FBQyxHQUFHelosSUFBSSxjQUFjLENBQUM7RUFDakQ7RUFFQSxPQUFPK2YsTUFBTTtBQUNmLENBQUM7QUFFRCxNQUFNRyxxQkFBcUIsR0FBR0EsQ0FDNUJyaEIsY0FBYyxFQUNkc2hCLGdCQUFnQixFQUNoQkMsbUJBQW1CLEtBQ2hCO0VBQ0gsTUFBTUwsTUFBTSxHQUFHO0lBQ2IsQ0FBQ3hoQiw2REFBb0IsQ0FBQ0MsS0FBSyxHQUFHb2hCLHVDQUNyQixDQUFDLGFBQWEsQ0FBQyxDQUNyQnBoQixLQUFLLENBQUMsZUFBZSxDQUFDLENBQ3RCaWIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO0lBQ2hDLENBQUNsYiw2REFBb0IsQ0FBQ0UsU0FBUyxHQUFHbWhCLHVDQUN6QixDQUFDLGtCQUFrQixDQUFDLENBQzFCbkcsUUFBUSxDQUFDLHdCQUF3QixDQUFDO0lBQ3JDLENBQUNsYiw2REFBb0IsQ0FBQ0csUUFBUSxHQUFHa2hCLHVDQUN4QixDQUFDLGlCQUFpQixDQUFDLENBQ3pCbkcsUUFBUSxDQUFDLHVCQUF1QixDQUFDO0lBQ3BDLENBQUNsYiw2REFBb0IsQ0FBQ0ksT0FBTyxHQUFHaWhCLHVDQUN2QixDQUFDLGVBQWUsQ0FBQyxDQUN2Qm5HLFFBQVEsQ0FBQyxxQkFBcUI7RUFDbkMsQ0FBQztFQUVELElBQUkyRyxtQkFBbUIsRUFBRTtJQUN2QkwsTUFBTSxDQUFDeGhCLDZEQUFvQixDQUFDSyxrQkFBa0IsQ0FBQyxHQUFHZ2hCLHFDQUMzQyxDQUFDLENBQUMsQ0FDTkksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsdUJBQXVCLENBQUM7RUFDM0M7RUFFQSxJQUFJRyxnQkFBZ0IsRUFBRTtJQUNwQkosTUFBTSxDQUFDTixvQkFBb0IsR0FBR0csdUNBQ3JCLENBQUMsa0JBQWtCLENBQUMsQ0FDMUJuRyxRQUFRLENBQUMsd0JBQXdCLENBQUM7SUFFckNzRyxNQUFNLENBQUNMLG1CQUFtQixHQUFHRSx1Q0FDcEIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUN6Qm5HLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztFQUN0QztFQUVBNWEsY0FBYyxDQUFDc2UsT0FBTyxDQUFFUyxDQUFDLElBQUs7SUFDNUIsTUFBTW5ELFlBQVksR0FBR04sOEVBQU0sQ0FBQ3lELENBQUMsQ0FBQzVkLElBQUksQ0FBQztJQUNuQytmLE1BQU0sQ0FBQ3RGLFlBQVksQ0FBQyxHQUFHcUYsaUJBQWlCLENBQUNsQyxDQUFDLENBQUM5ZCxJQUFJLEVBQUU4ZCxDQUFDLENBQUM1ZCxJQUFJLEVBQUU0ZCxDQUFDLENBQUNqRCxTQUFTLENBQUM7SUFFckUsSUFBSWlELENBQUMsQ0FBQ3dCLGtCQUFrQixFQUFFeGQsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNwQ2djLENBQUMsQ0FBQ3dCLGtCQUFrQixDQUFDakMsT0FBTyxDQUFFTCxJQUFJLElBQUs7UUFDckMsTUFBTXVELFdBQVcsR0FBR3ZELElBQUksQ0FBQ2tDLFlBQVk7UUFDckMsTUFBTXNCLGVBQWUsR0FBR25HLDhFQUFNLENBQUNrRyxXQUFXLENBQUNyZ0IsSUFBSSxDQUFDO1FBQ2hEK2YsTUFBTSxDQUFDTyxlQUFlLENBQUMsR0FBR1IsaUJBQWlCLENBQ3pDTyxXQUFXLENBQUN2Z0IsSUFBSSxFQUNoQnVnQixXQUFXLENBQUNyZ0IsSUFBSSxFQUNoQixLQUNGLENBQUMsQ0FDRXVnQixRQUFRLENBQUMsQ0FBQyxDQUNWQyxJQUFJLENBQUMvRixZQUFZLEVBQUU7VUFDbEJnRyxFQUFFLEVBQUdDLFdBQVcsSUFBSztZQUNuQixNQUFNQyxLQUFLLEdBQUc1Qyx5RkFBaUIsQ0FBQzJDLFdBQVcsRUFBRTVELElBQUksQ0FBQ0MsYUFBYSxDQUFDO1lBQ2hFLE9BQU80RCxLQUFLO1VBQ2QsQ0FBQztVQUNENWUsSUFBSSxFQUFHNmUsR0FBRyxJQUFLQSxHQUFHLENBQUNuSCxRQUFRLENBQUMsMkJBQTJCO1FBQ3pELENBQUMsQ0FBQztNQUNOLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsT0FBT21HLHVDQUFVLENBQUNHLE1BQU0sQ0FBQztBQUMzQixDQUFDOztBQUVEO0FBQ0E7QUFDQSxNQUFNYyxZQUFZLEdBQUcsU0FBQUEsQ0FDbkJsTyxLQUFLLEVBQ0w5VCxjQUFjLEVBQ2RpaUIsT0FBTyxFQUNQWCxnQkFBZ0IsRUFDaEJZLE9BQU8sRUFFSjtFQUFBLElBREhDLFlBQVksR0FBQUMsU0FBQSxDQUFBcmYsTUFBQSxRQUFBcWYsU0FBQSxRQUFBNUksU0FBQSxHQUFBNEksU0FBQSxNQUFHLEtBQUs7RUFFcEIsTUFBTUMsYUFBYSxHQUFHO0lBQ3BCLENBQUMzaUIsNkRBQW9CLENBQUNDLEtBQUssR0FBR21VLEtBQUssQ0FBQ25VLEtBQUs7SUFDekMsQ0FBQ0QsNkRBQW9CLENBQUNFLFNBQVMsR0FBR2tVLEtBQUssQ0FBQ3dPLFVBQVU7SUFDbEQsQ0FBQzVpQiw2REFBb0IsQ0FBQ0csUUFBUSxHQUFHaVUsS0FBSyxDQUFDeU8sU0FBUztJQUNoRCxDQUFDN2lCLDZEQUFvQixDQUFDSSxPQUFPLEdBQUdnVSxLQUFLLENBQUNoVSxPQUFPO0lBQzdDLENBQUNKLDZEQUFvQixDQUFDSyxrQkFBa0IsR0FBRytULEtBQUssQ0FBQzBPO0VBQ25ELENBQUM7RUFFRCxJQUFJbEIsZ0JBQWdCLEVBQUU7SUFDcEJlLGFBQWEsQ0FBQ3pCLG9CQUFvQixHQUFHc0IsT0FBTyxFQUFFSSxVQUFVLElBQUksRUFBRTtJQUM5REQsYUFBYSxDQUFDeEIsbUJBQW1CLEdBQUdxQixPQUFPLEVBQUVLLFNBQVMsSUFBSSxFQUFFO0VBQzlEO0VBRUF2aUIsY0FBYyxDQUFDc2UsT0FBTyxDQUFFUyxDQUFDLElBQUs7SUFDNUIsTUFBTW5ELFlBQVksR0FBR04sOEVBQU0sQ0FBQ3lELENBQUMsQ0FBQzVkLElBQUksQ0FBQztJQUNuQyxNQUFNOGQsTUFBTSxHQUFHZ0QsT0FBTyxDQUFDckcsWUFBWSxDQUFDO0lBQ3BDeUcsYUFBYSxDQUFDekcsWUFBWSxDQUFDLEdBQUdxRCxNQUFNLElBQUlJLDJGQUFtQixDQUFDTixDQUFDLENBQUM7SUFFOUQsSUFBSUEsQ0FBQyxDQUFDd0Isa0JBQWtCLEVBQUV4ZCxNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQ3BDZ2MsQ0FBQyxDQUFDd0Isa0JBQWtCLENBQUNqQyxPQUFPLENBQUVMLElBQUksSUFBSztRQUNyQyxNQUFNd0QsZUFBZSxHQUFHbkcsOEVBQU0sQ0FBQzJDLElBQUksQ0FBQ2tDLFlBQVksQ0FBQ2hmLElBQUksQ0FBQztRQUN0RCxNQUFNc2hCLFNBQVMsR0FBR1IsT0FBTyxDQUFDUixlQUFlLENBQUM7UUFDMUMsTUFBTUssS0FBSyxHQUFHNUMseUZBQWlCLENBQUNELE1BQU0sRUFBRWhCLElBQUksQ0FBQ0MsYUFBYSxDQUFDO1FBRTNELElBQUksQ0FBQ2lFLFlBQVksSUFBSUwsS0FBSyxFQUFFO1VBQzFCTyxhQUFhLENBQUNaLGVBQWUsQ0FBQyxHQUM1QmdCLFNBQVMsSUFBSXBELDJGQUFtQixDQUFDcEIsSUFBSSxDQUFDa0MsWUFBWSxDQUFDO1FBQ3ZEO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPa0MsYUFBYTtBQUN0QixDQUFDO0FBRUQsTUFBTUssZ0JBQWdCLEdBQUlqSyxNQUFNLElBQUs7RUFDbkMsTUFBTTtJQUFFTyxNQUFNO0lBQUUySixPQUFPO0lBQUVDO0VBQVksQ0FBQyxHQUFHbkssTUFBTTtFQUUvQ2hRLGdEQUFTLENBQUMsTUFBTTtJQUNkLE1BQU1vYSxVQUFVLEdBQUdoZ0IsTUFBTSxDQUFDQyxJQUFJLENBQUNrVyxNQUFNLENBQUM7SUFDdEMsSUFBSTJKLE9BQU8sSUFBSUUsVUFBVSxDQUFDOWYsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUN4QyxNQUFNK2YsT0FBTyxHQUFHclosUUFBUSxDQUFDc1osYUFBYSxDQUFDLGVBQWVGLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hFLElBQUksQ0FBQ0MsT0FBTyxFQUFFO0lBQ2Q7SUFDQUEsT0FBTyxDQUFDRSxjQUFjLENBQUM7TUFBRUMsUUFBUSxFQUFFLFFBQVE7TUFBRUMsS0FBSyxFQUFFO0lBQVMsQ0FBQyxDQUFDO0VBQ2pFLENBQUMsRUFBRSxDQUFDTixXQUFXLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTU8sVUFBVSxHQUFHemhCLElBQUEsSUFPYjtFQUFBLElBUGM7SUFDbEI4QyxNQUFNO0lBQ054RSxjQUFjO0lBQ2RtQyxNQUFNO0lBQ05paEIsT0FBTztJQUNQQyxRQUFRO0lBQ1JoUDtFQUNGLENBQUMsR0FBQTNTLElBQUE7RUFDQyxNQUFNO0lBQUVvRjtFQUFFLENBQUMsR0FBR2pCLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNeWQsYUFBYSxHQUFHOWUsTUFBTSxFQUFFMGQsT0FBTztFQUNyQztFQUNBLE1BQU1aLGdCQUFnQixHQUFHOWMsTUFBTSxFQUFFK0wsV0FBVyxFQUFFZ1Qsa0JBQWtCLElBQUksS0FBSztFQUN6RSxNQUFNdEIsT0FBTyxHQUFHemQsTUFBTSxFQUFFc1AsS0FBSyxFQUFFMFAsZUFBZSxDQUFDQyxNQUFNLENBQUMsQ0FBQzNVLEdBQUcsRUFBRXlRLEdBQUcsS0FBSztJQUNsRSxNQUFNM0QsWUFBWSxHQUFHTiw4RUFBTSxDQUFDaUUsR0FBRyxDQUFDL0QsUUFBUSxDQUFDcmEsSUFBSSxDQUFDO0lBQzlDMk4sR0FBRyxDQUFDOE0sWUFBWSxDQUFDLEdBQUcwRCxvRkFBWSxDQUFDQyxHQUFHLENBQUNqZSxLQUFLLEVBQUVpZSxHQUFHLENBQUMvRCxRQUFRLENBQUN2YSxJQUFJLENBQUM7SUFDOUQsT0FBTzZOLEdBQUc7RUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFFTixNQUFNMkosTUFBTSxHQUFHcUksaURBQVMsQ0FBQztJQUN2QnVCLGFBQWEsRUFBRUwsWUFBWSxDQUN6QnhkLE1BQU0sQ0FBQ3NQLEtBQUssRUFDWjlULGNBQWMsRUFDZGlpQixPQUFPLEVBQ1BxQixhQUFhLEVBQ2JoQyxnQkFDRixDQUFDO0lBQ0RvQyxnQkFBZ0IsRUFBRXJDLHFCQUFxQixDQUNyQ3JoQixjQUFjLEVBQ2RzaEIsZ0JBQWdCLEVBQ2hCbmYsTUFBTSxDQUFDd2hCLGlDQUNULENBQUM7SUFDRE4sUUFBUSxFQUFHcEssTUFBTSxJQUFLO01BQ3BCLE1BQU0ySyxlQUFlLEdBQUc1QixZQUFZLENBQ2xDaGlCLGNBQWMsRUFDZGlaLE1BQU0sRUFDTnFLLGFBQWEsRUFDYmhDLGdCQUFnQixFQUNoQixJQUNGLENBQUM7TUFDRCtCLFFBQVEsQ0FBQ08sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFDREMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQW5CLGdCQUFnQixDQUFDakssTUFBTSxDQUFDO0VBRXhCLG9CQUNFalMsd0RBQUE7SUFBTTZjLFFBQVEsRUFBRTVLLE1BQU0sQ0FBQ3FMLFlBQWE7SUFBQ0MsVUFBVTtJQUFBdmMsUUFBQSxnQkFDN0NsQix1REFBQSxDQUFDMGEsMkRBQWlCO01BQ2hCdkksTUFBTSxFQUFFQSxNQUFPO01BQ2YzRSxLQUFLLEVBQUV0UCxNQUFNLENBQUNzUCxLQUFNO01BQ3BCNEUsUUFBUSxFQUFFdlcsTUFBTSxDQUFDYyxFQUFHO01BQ3BCdVosUUFBUSxFQUFFLENBQUM0RztJQUFRLENBQ3BCLENBQUMsRUFFRDlCLGdCQUFnQixpQkFDZjlhLHdEQUFBLENBQUNtQyw4Q0FBRztNQUFBbkIsUUFBQSxnQkFDRmxCLHVEQUFBLENBQUNnUyxxREFBVTtRQUNUN0csT0FBTyxFQUFDLFdBQVc7UUFDbkJ1UyxZQUFZO1FBQ1p2YyxTQUFTLEVBQUVyQiw0REFBbUI7UUFBQW9CLFFBQUEsRUFFN0JWLENBQUMsQ0FBQyw0QkFBNEI7TUFBQyxDQUN0QixDQUFDLGVBQ2JSLHVEQUFBLENBQUNxYSxnRUFBc0I7UUFBQ2xJLE1BQU0sRUFBRUE7TUFBTyxDQUFFLENBQUM7SUFBQSxDQUN2QyxDQUNOLEVBRUF6WSxjQUFjLEVBQUUrQyxNQUFNLEdBQUcsQ0FBQyxpQkFDekJ5RCx3REFBQSxDQUFDbUMsOENBQUc7TUFBQW5CLFFBQUEsZ0JBQ0ZsQix1REFBQTtRQUFJbUIsU0FBUyxFQUFFckIsa0VBQXlCO1FBQUFvQixRQUFBLEVBQ3JDVixDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDbkMsQ0FBQyxlQUNMUix1REFBQSxDQUFDd1osNkRBQW9CO1FBQ25COWYsY0FBYyxFQUFFQSxjQUFlO1FBQy9CZ2dCLFNBQVMsRUFBRW9ELE9BQVE7UUFDbkIzSyxNQUFNLEVBQUVBO01BQU8sQ0FDaEIsQ0FBQztJQUFBLENBQ0MsQ0FDTixFQUVBdFcsTUFBTSxDQUFDZ2lCLCtCQUErQixpQkFDckM3ZCx1REFBQSxDQUFDa2EsdUZBQXNCO01BQ3JCL0gsTUFBTSxFQUFFQSxNQUFPO01BQ2ZnSSxVQUFVLEVBQUV0ZSxNQUFNLENBQUNnaUIsK0JBQWdDO01BQ25EeEwsVUFBVSxFQUFFeFcsTUFBTSxDQUFDd2hCLGlDQUFrQztNQUNyRGpJLFVBQVUsRUFBRSxDQUFDMEg7SUFBUSxDQUN0QixDQUNGLGVBRUQ1Yyx3REFBQSxDQUFDbUMsOENBQUc7TUFBQ2xCLFNBQVMsRUFBRXJCLHVEQUFjO01BQUFvQixRQUFBLGdCQUM1QmxCLHVEQUFBLENBQUNpRyxpREFBTTtRQUNMdEwsSUFBSSxFQUFDLFFBQVE7UUFDYndHLFNBQVMsRUFBRXJCLHdEQUFlO1FBQzFCcUwsT0FBTyxFQUFDLFdBQVc7UUFDbkJ4RyxLQUFLLEVBQUMsU0FBUztRQUNmeUcsSUFBSSxFQUFDLE9BQU87UUFBQWxLLFFBQUEsRUFFWFYsQ0FBQyxDQUFDLG9CQUFvQjtNQUFDLENBQ2xCLENBQUMsZUFDVFIsdURBQUEsQ0FBQ2lHLGlEQUFNO1FBQ0w5RSxTQUFTLEVBQUVyQiwwREFBaUI7UUFDNUI2RSxLQUFLLEVBQUMsU0FBUztRQUNmeUcsSUFBSSxFQUFDLE9BQU87UUFDWnhKLE9BQU8sRUFBRW1NLE9BQVE7UUFBQTdNLFFBQUEsRUFFaEJWLENBQUMsQ0FBQyxzQkFBc0I7TUFBQyxDQUNwQixDQUFDO0lBQUEsQ0FDTixDQUFDO0VBQUEsQ0FDRixDQUFDO0FBRVgsQ0FBQztBQUVEcWMsVUFBVSxDQUFDN2EsU0FBUyxHQUFHO0VBQ3JCOUQsTUFBTSxFQUFFbUIsMERBQWdCO0VBQ3hCM0YsY0FBYyxFQUFFMkYseURBQWUsQ0FBQ2dULFVBQVU7RUFDMUN4VyxNQUFNLEVBQUV3RCwwREFBZ0IsQ0FBQ2dULFVBQVU7RUFDbkN5SyxPQUFPLEVBQUV6ZCx3REFBYztFQUN2QjBkLFFBQVEsRUFBRTFkLHdEQUFjLENBQUNnVCxVQUFVO0VBQ25DdEUsT0FBTyxFQUFFMU8sd0RBQWMsQ0FBQ2dUO0FBQzFCLENBQUM7QUFFRCxpRUFBZXdLLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25VekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDQTtBQUVBO0FBQ1E7QUFDWjtBQUFBO0FBRTNDLE1BQU1uQyxpQkFBaUIsR0FBR3RmLElBQUEsSUFBb0M7RUFBQSxJQUFuQztJQUFFK1csTUFBTTtJQUFFQyxRQUFRO0lBQUU4RDtFQUFTLENBQUMsR0FBQTlhLElBQUE7RUFDdkQsTUFBTTtJQUFFb0Y7RUFBRSxDQUFDLEdBQUdqQiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFbVQsTUFBTTtJQUFFQyxNQUFNO0lBQUVDLE9BQU87SUFBRW5ELFlBQVk7SUFBRXVLO0VBQVcsQ0FBQyxHQUFHN0gsTUFBTTtFQUVwRSxvQkFDRWpTLHVEQUFBLENBQUNtQyw4Q0FBRztJQUFDbEIsU0FBUyxFQUFFckIsd0RBQWU7SUFBQW9CLFFBQUEsZ0JBQzdCbEIsc0RBQUEsQ0FBQzhSLG9EQUFTO01BQ1J1QyxTQUFTO01BQ1R4WixJQUFJLEVBQUV6Qiw0REFBb0IsQ0FBQ0MsS0FBTTtNQUNqQ3dOLEtBQUssRUFBRXJHLENBQUMsQ0FBQyxxQkFBcUIsQ0FBRTtNQUNoQzBWLFFBQVE7TUFDUmxiLEtBQUssRUFBRTJYLE1BQU0sQ0FBQ3ZaLDREQUFvQixDQUFDQyxLQUFLO0lBQUUsQ0FDM0MsQ0FBQyxFQUNELENBQUNELDREQUFvQixDQUFDRSxTQUFTLEVBQUVGLDREQUFvQixDQUFDRyxRQUFRLENBQUMsQ0FBQzBQLEdBQUcsQ0FDakVwTyxJQUFJLGlCQUNIbUYsc0RBQUEsQ0FBQzhSLG9EQUFTO01BQ1J1QyxTQUFTO01BRVR4WixJQUFJLEVBQUVBLElBQUs7TUFDWGdNLEtBQUssRUFBRXJHLENBQUMsQ0FBQyxpQkFBaUIzRixJQUFJLEVBQUUsQ0FBRTtNQUNsQ0csS0FBSyxFQUFFMlgsTUFBTSxDQUFDOVgsSUFBSSxDQUFFO01BQ3BCcWIsUUFBUSxFQUFFQSxRQUFTO01BQ25CblUsUUFBUSxFQUFFME4sWUFBYTtNQUN2QmdFLE1BQU0sRUFBRXVHLFVBQVc7TUFDbkJqSCxLQUFLLEVBQUVILE9BQU8sQ0FBQy9YLElBQUksQ0FBQyxJQUFJbVksT0FBTyxDQUFDTixNQUFNLENBQUM3WCxJQUFJLENBQUMsQ0FBRTtNQUM5Q29ZLFVBQVUsRUFBRWQsTUFBTSxDQUFDUyxPQUFPLENBQUMvWCxJQUFJLENBQUMsSUFBSXNYLE1BQU0sQ0FBQ08sTUFBTSxDQUFDN1gsSUFBSSxDQUFFO01BQ3hEeVosUUFBUTtJQUFBLEdBVEh6WixJQVVOLENBRUwsQ0FBQyxlQUNEbUYsc0RBQUEsQ0FBQ2tTLHFEQUFZO01BQUNDLE1BQU0sRUFBRUEsTUFBTztNQUFDQyxRQUFRLEVBQUVBLFFBQVM7TUFBQ0MsVUFBVTtJQUFBLENBQUUsQ0FBQyxlQUMvRHJTLHNEQUFBLENBQUNxQyw4Q0FBRztNQUFDbEIsU0FBUyxFQUFFckIseURBQWdCO01BQUFvQixRQUFBLEVBQUVWLENBQUMsQ0FBQyx5QkFBeUI7SUFBQyxDQUFNLENBQUM7RUFBQSxDQUNsRSxDQUFDO0FBRVYsQ0FBQztBQUVEa2EsaUJBQWlCLENBQUMxWSxTQUFTLEdBQUc7RUFDNUJtUSxNQUFNLEVBQUU5UywwREFBZ0IsQ0FBQ2dUO0FBQzNCLENBQUM7QUFFRCxpRUFBZXFJLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7QUM5RHpCLE1BQU10aEIsb0JBQW9CLEdBQUc7RUFDbENDLEtBQUssRUFBRSxnQkFBZ0I7RUFDdkJDLFNBQVMsRUFBRSxxQkFBcUI7RUFDaENDLFFBQVEsRUFBRSxvQkFBb0I7RUFDOUJDLE9BQU8sRUFBRSxrQkFBa0I7RUFDM0JDLGtCQUFrQixFQUFFO0FBQ3RCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOeUI7QUFDUztBQUNPO0FBQ0s7QUFDWjtBQUN5QztBQUsvQztBQUN1QjtBQUNZO0FBQ2Y7QUFFRjtBQUFBO0FBRS9DLE1BQU1nVCxZQUFZLEdBQUdyUixJQUFBLElBQWlDO0VBQUEsSUFBaEM7SUFBRVMsTUFBTTtJQUFFcUMsTUFBTTtJQUFFNlA7RUFBUSxDQUFDLEdBQUEzUyxJQUFBO0VBQy9DLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFDSnJDLElBQUksRUFBRTtNQUFFUztJQUFZLENBQUM7SUFDckJqRTtFQUNGLENBQUMsR0FBRzROLHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDcE0sV0FBVyxDQUFDO0VBQzdDLE1BQU04aUIsZ0JBQWdCLEdBQUd4Z0IsTUFBTSxFQUFFOUIsS0FBSyxDQUFDdWlCLFFBQVEsS0FBS2hoQixXQUFXLENBQUNoQixFQUFFO0VBQ2xFLE1BQU1paUIsaUJBQWlCLEdBQUcxZ0IsTUFBTSxFQUFFc1AsS0FBSyxFQUFFblUsS0FBSyxLQUFLc0UsV0FBVyxDQUFDdEUsS0FBSztFQUNwRSxNQUFNd2xCLGlCQUFpQixHQUNyQixDQUFDRCxpQkFBaUIsSUFBSUYsZ0JBQWdCLEtBQ3RDN2lCLE1BQU0sQ0FBQ2lqQixxQ0FBcUM7RUFDOUMsTUFBTTtJQUFFQztFQUFXLENBQUMsR0FBR3JTLHlFQUFnQixDQUFDeE8sTUFBTSxDQUFDO0VBRS9DLE1BQU04Z0IsTUFBTSxHQUFJbmUsR0FBRyxJQUFLO0lBQ3RCb1EsT0FBTyxDQUFDQyxHQUFHLENBQUMsUUFBUSxFQUFFclEsR0FBRyxDQUFDO0VBQzVCLENBQUM7RUFFRCxvQkFDRVgsd0RBQUEsQ0FBQ2llLGlEQUFNO0lBQ0xjLElBQUksRUFBRSxDQUFDLENBQUMvZ0IsTUFBTztJQUNmNlAsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCbVIsTUFBTSxFQUFDLE9BQU87SUFDZEMsVUFBVSxFQUFFO01BQUVDLFdBQVcsRUFBRTtJQUFNLENBQUU7SUFDbkNqZSxTQUFTLEVBQUVyQix1RUFBNkI7SUFBQW9CLFFBQUEsZ0JBRXhDaEIsd0RBQUEsQ0FBQ21DLDhDQUFHO01BQUNsQixTQUFTLEVBQUVyQix3REFBYztNQUFBb0IsUUFBQSxnQkFDNUJsQix1REFBQSxDQUFDb2UscURBQVU7UUFDVGpkLFNBQVMsRUFBRXJCLDBEQUFnQjtRQUMzQjhCLE9BQU8sRUFBRW1NLE9BQVE7UUFDakJ6TSxFQUFFLEVBQUU7VUFBRWtlLEtBQUssRUFBRTtRQUFRLENBQUU7UUFDdkI5ZCxRQUFRLEVBQUMsT0FBTztRQUFBUixRQUFBLGVBRWhCbEIsdURBQUEsQ0FBQ0osc0RBQVMsSUFBRTtNQUFDLENBQ0gsQ0FBQyxlQUNiSSx1REFBQSxDQUFDZ1MscURBQVU7UUFBQzdHLE9BQU8sRUFBQyxJQUFJO1FBQUN1UyxZQUFZO1FBQUN2YyxTQUFTLEVBQUVyQix1REFBYTtRQUFBb0IsUUFBQSxFQUMzRGhELE1BQU0sRUFBRStMLFdBQVcsRUFBRXBQO01BQUksQ0FDaEIsQ0FBQyxlQUNicUYsd0RBQUEsQ0FBQzhSLHFEQUFVO1FBQUM3RyxPQUFPLEVBQUMsT0FBTztRQUFDdVMsWUFBWTtRQUFDdmMsU0FBUyxFQUFFckIsMERBQWdCO1FBQUFvQixRQUFBLEdBQ2pFVixDQUFDLENBQUMsNEJBQTRCLENBQUMsRUFBQyxHQUFDLEVBQUN0QyxNQUFNLEVBQUVzUCxLQUFLLEVBQUVuVSxLQUFLO01BQUEsQ0FDN0MsQ0FBQyxFQUVaMGxCLFVBQVUsaUJBQ1Q3ZSx3REFBQSxDQUFBRSx3REFBQTtRQUFBYyxRQUFBLGdCQUNFbEIsdURBQUEsQ0FBQ3FDLDhDQUFHO1VBQUNsQixTQUFTLEVBQUVyQix3REFBYztVQUFBb0IsUUFBQSxlQUM1QmxCLHVEQUFBLENBQUNrZSxzREFBTTtZQUNMOVMsSUFBSSxFQUFFLEdBQUk7WUFDVm1ELEtBQUssRUFBRTtjQUFFL0osTUFBTSxFQUFFLE1BQU07Y0FBRW1iLFFBQVEsRUFBRSxNQUFNO2NBQUV0YixLQUFLLEVBQUU7WUFBTyxDQUFFO1lBQzNEckosS0FBSyxFQUFFa0QsTUFBTSxDQUFDMGhCLE9BQVE7WUFDdEJDLE9BQU8sRUFBQztVQUFhLENBQ3RCO1FBQUMsQ0FDQyxDQUFDLGVBQ043Zix1REFBQTtVQUFHbUIsU0FBUyxFQUFFckIsd0RBQWM7VUFBQW9CLFFBQUEsRUFBRVYsQ0FBQyxDQUFDLHNCQUFzQjtRQUFDLENBQUksQ0FBQyxlQUM1RFIsdURBQUEsQ0FBQ2dTLHFEQUFVO1VBQUM3RyxPQUFPLEVBQUMsT0FBTztVQUFDdVMsWUFBWTtVQUFDdmMsU0FBUyxFQUFFckIsd0RBQWM7VUFBQW9CLFFBQUEsRUFDL0RWLENBQUMsQ0FBQyx1QkFBdUI7UUFBQyxDQUNqQixDQUFDO01BQUEsQ0FDYixDQUNILEVBRUEsQ0FBQzNFLE1BQU0sRUFBRWtrQixVQUFVLElBQUloQixVQUFVLGlCQUNoQzdlLHdEQUFBLENBQUNtQyw4Q0FBRztRQUFDbEIsU0FBUyxFQUFFckIsd0VBQThCO1FBQUFvQixRQUFBLGdCQUM1Q2hCLHdEQUFBLENBQUMrRixpREFBTTtVQUNMOUUsU0FBUyxFQUFFckIsNkRBQW1CO1VBQzlCcUwsT0FBTyxFQUFDLFdBQVc7VUFDbkJ4RyxLQUFLLEVBQUMsU0FBUztVQUFBekQsUUFBQSxnQkFFZmxCLHVEQUFBLENBQUN1ZSxxRUFBWTtZQUFDN2MsUUFBUSxFQUFDO1VBQU8sQ0FBRSxDQUFDLEVBQ2hDbEIsQ0FBQyxDQUFDLHdCQUF3QixDQUFDO1FBQUEsQ0FDdEIsQ0FBQyxlQUNUTix3REFBQSxDQUFDK0YsaURBQU07VUFBQzlFLFNBQVMsRUFBRXJCLHlEQUFlO1VBQUFvQixRQUFBLGdCQUNoQ2xCLHVEQUFBLENBQUN5ZSw4REFBUztZQUFDL2MsUUFBUSxFQUFDO1VBQU8sQ0FBRSxDQUFDLEVBQzdCbEIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1FBQUEsQ0FDbEIsQ0FBQztNQUFBLENBQ04sQ0FDTixlQUVEUix1REFBQTtRQUFLbUIsU0FBUyxFQUFFckIsNkRBQW1CO1FBQUFvQixRQUFBLGVBQ2pDbEIsdURBQUEsQ0FBQ3NNLCtEQUFXO1VBQ1YzQixNQUFNLEVBQUV6TSxNQUFNLEVBQUU5QixLQUFLLEVBQUV1TyxNQUFPO1VBQzlCaUQsSUFBSTtVQUNKQyxTQUFTO1VBQ1RNLFFBQVE7VUFDUjlKLEtBQUssRUFBRTtRQUFJLENBQ1o7TUFBQyxDQUNDLENBQUM7SUFBQSxDQUNILENBQUMsZUFFTm5FLHdEQUFBLENBQUNtQyw4Q0FBRztNQUFDbEIsU0FBUyxFQUFFckIsbUVBQXlCO01BQUFvQixRQUFBLGdCQUN2Q2xCLHVEQUFBLENBQUNnUyxxREFBVTtRQUNUN0csT0FBTyxFQUFDLElBQUk7UUFDWnVTLFlBQVk7UUFDWnZjLFNBQVMsRUFBRXJCLG1FQUF5QjtRQUFBb0IsUUFBQSxFQUVuQ1YsQ0FBQyxDQUFDLG9DQUFvQztNQUFDLENBQzlCLENBQUMsRUFDWnRDLE1BQU0saUJBQ0w4Qix1REFBQSxDQUFDNmMsOERBQVU7UUFDVDNlLE1BQU0sRUFBRUEsTUFBTztRQUNmeEUsY0FBYyxFQUFFQSxjQUFlO1FBQy9CbUMsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZpaEIsT0FBTyxFQUFFK0IsaUJBQWtCO1FBQzNCOUIsUUFBUSxFQUFFaUMsTUFBTztRQUNqQmpSLE9BQU8sRUFBRUE7TUFBUSxDQUNsQixDQUNGO0lBQUEsQ0FDRSxDQUFDO0VBQUEsQ0FDQSxDQUFDO0FBRWIsQ0FBQztBQUVEdEIsWUFBWSxDQUFDekssU0FBUyxHQUFHO0VBQ3ZCbkcsTUFBTSxFQUFFd0QsMERBQWdCO0VBQ3hCbkIsTUFBTSxFQUFFbUIsMERBQWdCO0VBQ3hCME8sT0FBTyxFQUFFMU8sd0RBQWM0QztBQUN6QixDQUFDO0FBRUQsaUVBQWV3SyxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcElEO0FBQ1M7QUFDWTtBQUNHO0FBQ0g7QUFBQTtBQUUvQyxTQUFTSixZQUFZQSxDQUFBalIsSUFBQSxFQUFhO0VBQUEsSUFBWjtJQUFFOEM7RUFBTyxDQUFDLEdBQUE5QyxJQUFBO0VBQzlCLE1BQU07SUFBRW9GO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1naEIsUUFBUSxHQUFHcmlCLE1BQU0sQ0FBQ3dQLFNBQVM7RUFDakMsTUFBTThTLGVBQWUsR0FBR3RpQixNQUFNLENBQUNzaUIsZUFBZSxDQUFDelAsSUFBSSxDQUNoRDBQLENBQUMsSUFBS0EsQ0FBQyxDQUFDalcsTUFBTSxLQUFLLFdBQ3RCLENBQUM7RUFDRCxNQUFNa1csd0JBQXdCLEdBQUd4aUIsTUFBTSxDQUFDc1AsS0FBSyxFQUFFaEQsTUFBTSxLQUFLLFlBQVk7RUFDdEUsTUFBTW1XLGlCQUFpQixHQUFHemlCLE1BQU0sQ0FBQ3lnQixRQUFRLEtBQUssQ0FBQztFQUMvQyxNQUFNaUMsZUFBZSxHQUFHMWlCLE1BQU0sQ0FBQ3NQLEtBQUssSUFBSXRQLE1BQU0sQ0FBQ3NQLEtBQUssRUFBRWhELE1BQU0sS0FBSyxVQUFVO0VBRTNFLG9CQUNFeEssc0RBQUEsQ0FBQ3NnQixvREFBUztJQUFDbmYsU0FBUyxFQUFFckIsc0VBQTZCO0lBQUFvQixRQUFBLEVBQ2hEcWYsUUFBUSxnQkFDUHJnQix1REFBQSxDQUFBRSx1REFBQTtNQUFBYyxRQUFBLEdBQ0dzZixlQUFlLGlCQUNkeGdCLHNEQUFBLENBQUNpRyxpREFBTTtRQUNMOUUsU0FBUyxFQUFFLEdBQUdyQiwyREFBaUIsSUFBSUEsc0VBQTRCLEVBQUc7UUFBQW9CLFFBQUEsRUFFakVWLENBQUMsQ0FBQyx1Q0FBdUM7TUFBQyxDQUNyQyxDQUNULEVBQ0FrZ0Isd0JBQXdCLGlCQUN2QjFnQixzREFBQSxDQUFDaUcsaURBQU07UUFDTDlFLFNBQVMsRUFBRSxHQUFHckIsMkRBQWlCLElBQUlBLGlFQUF1QixFQUFHO1FBQUFvQixRQUFBLEVBRTVEVixDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDL0IsQ0FDVCxFQUNBbWdCLGlCQUFpQixpQkFDaEIzZ0Isc0RBQUEsQ0FBQ2lHLGlEQUFNO1FBQ0w5RSxTQUFTLEVBQUUsR0FBR3JCLDJEQUFpQixJQUFJQSxpRUFBdUIsRUFBRztRQUFBb0IsUUFBQSxFQUU1RFYsQ0FBQyxDQUFDLGlDQUFpQztNQUFDLENBQy9CLENBQ1QsRUFDQW9nQixlQUFlLGlCQUNkNWdCLHNEQUFBLENBQUNpRyxpREFBTTtRQUFDOUUsU0FBUyxFQUFFLEdBQUdyQiwyREFBaUIsSUFBSUEsK0RBQXFCLEVBQUc7UUFBQW9CLFFBQUEsRUFDaEVWLENBQUMsQ0FBQywrQkFBK0I7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRCxDQUFDLGdCQUVIUixzREFBQSxDQUFDaUcsaURBQU07TUFBQzlFLFNBQVMsRUFBRSxHQUFHckIsMkRBQWlCLElBQUlBLGdFQUFzQixFQUFHO01BQUFvQixRQUFBLEVBQ2pFVixDQUFDLENBQUMsZ0NBQWdDO0lBQUMsQ0FDOUI7RUFDVCxDQUNRLENBQUM7QUFFaEI7QUFFQTZMLFlBQVksQ0FBQ3JLLFNBQVMsR0FBRztFQUN2QjlELE1BQU0sRUFBRW1CLHVEQUFlLENBQUM7SUFDdEJtTyxLQUFLLEVBQUVuTyx1REFBZSxDQUFDO01BQ3JCbUwsTUFBTSxFQUFFbkwsMERBQWdCcUw7SUFDMUIsQ0FBQyxDQUFDO0lBQ0Y4VixlQUFlLEVBQUVuaEIseURBQWlCLENBQUM5QyxNQUFNO0VBQzNDLENBQUM7QUFDSCxDQUFDO0FBRUQsaUVBQWU4UCxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqRXBCLE1BQU0rVSxlQUFlLEdBQUcsVUFBVTtBQUNsQyxNQUFNQyxpQkFBaUIsR0FBRyxZQUFZO0FBQ3RDLE1BQU1DLGdCQUFnQixHQUFHLFdBQVc7QUFDcEMsTUFBTUMsaUJBQWlCLEdBQUcsWUFBWTtBQUV0QyxNQUFNN1UsZ0JBQWdCLEdBQUl4TyxNQUFNLElBQUs7RUFDMUMsTUFBTXNqQixTQUFTLEdBQUdBLENBQUEsS0FBTTtJQUN0QixJQUFJLENBQUN0akIsTUFBTSxDQUFDd1AsU0FBUyxFQUFFLE9BQU80VCxnQkFBZ0I7SUFDOUMsSUFBSXBqQixNQUFNLENBQUN5Z0IsUUFBUSxLQUFLLENBQUMsRUFBRSxPQUFPNEMsaUJBQWlCO0lBQ25ELElBQUksQ0FBQ3JqQixNQUFNLENBQUNzUCxLQUFLLEVBQUV3TyxVQUFVLElBQUksQ0FBQzlkLE1BQU0sQ0FBQ3NQLEtBQUssRUFBRXlPLFNBQVMsRUFDdkQsT0FBT29GLGlCQUFpQjtJQUMxQixPQUFPbmpCLE1BQU0sQ0FBQ3NQLEtBQUssQ0FBQ2hELE1BQU07RUFDNUIsQ0FBQztFQUVELElBQUksQ0FBQ3RNLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztFQUV0QixNQUFNc00sTUFBTSxHQUFHZ1gsU0FBUyxDQUFDLENBQUM7RUFDMUIsTUFBTWpCLFFBQVEsR0FBR3JpQixNQUFNLENBQUN3UCxTQUFTLElBQUlsRCxNQUFNLEtBQUs4VyxnQkFBZ0I7RUFDaEUsTUFBTUcsWUFBWSxHQUNoQnZqQixNQUFNLENBQUN3akIsWUFBWSxHQUFHLENBQUMsSUFBSXhqQixNQUFNLENBQUN3akIsWUFBWSxHQUFHeGpCLE1BQU0sQ0FBQ3lqQixlQUFlO0VBQ3pFLE1BQU1DLGNBQWMsR0FDbEIsQ0FBQzFqQixNQUFNLENBQUMrTCxXQUFXLENBQUNnVCxrQkFBa0IsSUFDcEMvZSxNQUFNLENBQUMyakIsVUFBVSxFQUFFNUUsa0JBQWtCLEtBQ3ZDelMsTUFBTSxLQUFLK1csaUJBQWlCLElBQzVCLENBQUNyakIsTUFBTSxDQUFDc1AsS0FBSyxFQUFFb08sT0FBTyxFQUFFamYsRUFBRSxJQUMxQixDQUFDdUIsTUFBTSxDQUFDc1AsS0FBSyxFQUFFc1UsVUFBVTtFQUMzQixNQUFNL0MsVUFBVSxHQUFHdlUsTUFBTSxLQUFLNFcsZUFBZTtFQUM3QyxNQUFNdlUsWUFBWSxHQUFHckMsTUFBTSxLQUFLK1csaUJBQWlCO0VBQ2pELE1BQU0zVSxZQUFZLEdBQUdwQyxNQUFNLEtBQUs2VyxpQkFBaUI7RUFFakQsT0FBTztJQUNMN1csTUFBTTtJQUNOdVUsVUFBVTtJQUNWbFMsWUFBWTtJQUNaRCxZQUFZO0lBQ1oyVCxRQUFRO0lBQ1JrQixZQUFZO0lBQ1pHO0VBQ0YsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDK0U7QUFTNUQ7QUFDNEI7QUFFL0MsTUFBTUksYUFBYSxHQUFHO0VBQ3BCbm1CLE1BQU0sRUFBRSxJQUFJO0VBQ1pxQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0VBQ1Ira0IsYUFBYSxFQUFFLEtBQUs7RUFDcEJyYSxZQUFZLEVBQUUsRUFBRTtFQUNoQmxPLGNBQWMsRUFBRSxFQUFFO0VBQ2xCZ1osTUFBTSxFQUFFLENBQUMsQ0FBQztFQUNWd1AsT0FBTyxFQUFFLEtBQUs7RUFDZEMsY0FBYyxFQUFFLEtBQUs7RUFDckJ0YSxtQkFBbUIsRUFBRSxDQUFDO0VBQ3RCdWEsZ0JBQWdCLEVBQUUsQ0FBQztFQUNuQnRhLGVBQWUsRUFBRSxDQUFDO0VBQ2xCQyxZQUFZLEVBQUUsQ0FBQztFQUNmc2EsbUJBQW1CLEVBQUUsQ0FBQztFQUN0QkMsZ0JBQWdCLEVBQUUsQ0FBQztFQUNuQkMsZUFBZSxFQUFFLENBQUM7RUFDbEJDLFlBQVksRUFBRTtBQUNoQixDQUFDO0FBRUQsTUFBTUMsYUFBYSxHQUFHLFNBQUFBLENBQUEsRUFBbUQ7RUFBQSxJQUFsRHphLEtBQUssR0FBQThULFNBQUEsQ0FBQXJmLE1BQUEsUUFBQXFmLFNBQUEsUUFBQTVJLFNBQUEsR0FBQTRJLFNBQUEsTUFBR2tHLGFBQWE7RUFBQSxJQUFFO0lBQUVybkIsSUFBSTtJQUFFa0M7RUFBUSxDQUFDLEdBQUFpZixTQUFBLENBQUFyZixNQUFBLFFBQUFxZixTQUFBLFFBQUE1SSxTQUFBLEdBQUE0SSxTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ2xFLFFBQVFuaEIsSUFBSTtJQUNWLEtBQUtvbkIseUZBQVc7SUFDaEIsS0FBSzNwQixpREFBVztNQUNkLE9BQU80cEIsYUFBYTtJQUN0QixLQUFLM3BCLGtEQUFZO01BQ2YsT0FBTztRQUNMLEdBQUcyUCxLQUFLO1FBQ1JILG1CQUFtQixFQUFFLENBQUM7UUFDdEJ1YSxnQkFBZ0IsRUFBRTtNQUNwQixDQUFDO0lBQ0gsS0FBS3JvQixnREFBVTtNQUNiLE9BQU87UUFBRSxHQUFHaU8sS0FBSztRQUFFbk0sTUFBTSxFQUFFZ0I7TUFBUSxDQUFDO0lBQ3RDLEtBQUsvQyw4Q0FBUTtNQUNYLE9BQU87UUFBRSxHQUFHa08sS0FBSztRQUFFOUssSUFBSSxFQUFFTDtNQUFRLENBQUM7SUFDcEMsS0FBS3ZFLHFEQUFlO01BQUU7UUFDcEIsTUFBTTtVQUFFc1A7UUFBYSxDQUFDLEdBQUdJLEtBQUs7UUFDOUIsTUFBTTtVQUFFVSxJQUFJO1VBQUVrRCxLQUFLO1VBQUVsTjtRQUFhLENBQUMsR0FBRzdCLE9BQU8sQ0FBQzRMLFFBQVE7UUFDdEQsT0FBTztVQUNMLEdBQUdULEtBQUs7VUFDUkosWUFBWSxFQUNWbEosWUFBWSxLQUFLekcsd0RBQVUsR0FBR3lRLElBQUksR0FBRyxDQUFDLEdBQUdkLFlBQVksRUFBRSxHQUFHYyxJQUFJLENBQUM7VUFDakVYLFlBQVksRUFBRTZELEtBQUs7VUFDbkIvRCxtQkFBbUIsRUFBRW5KO1FBQ3ZCLENBQUM7TUFDSDtJQUNBLEtBQUszRiwwREFBb0I7TUFBRTtRQUN6QixNQUFNO1VBQUU2TztRQUFhLENBQUMsR0FBR0ksS0FBSztRQUM5QixNQUFNO1VBQUVVLElBQUk7VUFBRWtELEtBQUs7VUFBRWxOLFlBQVk7VUFBRThSO1FBQVUsQ0FBQyxHQUFHM1QsT0FBTyxDQUFDNEwsUUFBUTtRQUNqRSxNQUFNaWEsV0FBVyxHQUFHOWEsWUFBWSxDQUFDbUosSUFBSSxDQUFFNFIsQ0FBQyxJQUFLQSxDQUFDLENBQUNobUIsRUFBRSxLQUFLK0wsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFdE0sS0FBSyxDQUFDTyxFQUFFLENBQUM7UUFFeEUsTUFBTWltQixZQUFZLEdBQUc7VUFDbkIsR0FBR0YsV0FBVztVQUNkNVIsYUFBYSxFQUNYcFMsWUFBWSxLQUFLekcsd0RBQVUsR0FDdkJ5USxJQUFJLEdBQ0osQ0FBQyxHQUFHZ2EsV0FBVyxDQUFDNVIsYUFBYSxFQUFFLEdBQUdwSSxJQUFJLENBQUM7VUFDN0N5SSxvQkFBb0IsRUFBRXpTLFlBQVk7VUFDbENta0IsaUJBQWlCLEVBQUVyUyxTQUFTO1VBQzVCcUIsYUFBYSxFQUFFakc7UUFDakIsQ0FBQztRQUNELE9BQU87VUFDTCxHQUFHNUQsS0FBSztVQUNSSixZQUFZLEVBQUVBLFlBQVksQ0FBQ3FCLEdBQUcsQ0FBRTZaLEVBQUUsSUFDaENBLEVBQUUsQ0FBQ25tQixFQUFFLEtBQUtpbUIsWUFBWSxDQUFDam1CLEVBQUUsR0FBR2ltQixZQUFZLEdBQUdFLEVBQzdDO1FBQ0YsQ0FBQztNQUNIO0lBQ0EsS0FBSzNwQiw2REFBdUI7TUFBRTtRQUM1QixNQUFNO1VBQUV1UCxJQUFJO1VBQUVrRCxLQUFLO1VBQUVsTjtRQUFhLENBQUMsR0FBRzdCLE9BQU8sQ0FBQzRMLFFBQVE7UUFDdEQsT0FBTztVQUFDLEdBQUdULEtBQUs7VUFBRXRPLGNBQWMsRUFBRWdQO1FBQUksQ0FBQztNQUN6QztJQUNBO01BQ0UsT0FBT1YsS0FBSztFQUNoQjtBQUNGLENBQUM7QUFFRCxpRUFBZXlhLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEdJO0FBQ2tCO0FBVTNCO0FBQ3lCO0FBQ1I7QUFDRjtBQUUvQixNQUFNa0IsUUFBUSxHQUFHdm9CLElBQUEsSUFBZ0Q7RUFBQSxJQUEvQztJQUFFd29CLFFBQVE7SUFBRUMsUUFBUTtJQUFFaG9CLE1BQU07SUFBRUY7RUFBVyxDQUFDLEdBQUFQLElBQUE7RUFDakU7RUFDQSxNQUFNMG9CLFFBQVEsR0FBR0osc0RBQWUsQ0FBQztJQUMvQjluQixXQUFXLEVBQUU2bUIsZ0RBQWFBO0VBQzVCLENBQUMsQ0FBQztFQUVGLE1BQU1zQixLQUFLLEdBQUdmLGdFQUFjLENBQUM7SUFDM0JnQixPQUFPLEVBQUVkLDZEQUFjLENBQ3JCO01BQ0V0ZCxHQUFHLEVBQUUsMEJBQTBCZ2UsUUFBUSxFQUFFO01BQ3pDSCxPQUFPQSxvRUFBQUE7SUFDVCxDQUFDLEVBQ0RLLFFBQ0YsQ0FBQztJQUNERyxVQUFVLEVBQUdDLG9CQUFvQixJQUMvQkEsb0JBQW9CLENBQUM7TUFDbkJDLEtBQUssRUFBRTtRQUNMQyxhQUFhLEVBQUU7VUFDYlIsUUFBUTtVQUNSam9CLFVBQVU7VUFDVkUsTUFBTTtVQUNOZ29CO1FBQ0Y7TUFDRixDQUFDO01BQ0RRLGNBQWMsRUFBRSxLQUFLO01BQ3JCQyxpQkFBaUIsRUFBRTtRQUNqQkMsY0FBYyxFQUFFLENBQUNwQixnREFBSyxFQUFFQyxvREFBUyxFQUFFQyxnREFBSyxFQUFFQyxrREFBTyxFQUFFQyxnREFBSyxFQUFFQyxtREFBUTtNQUNwRTtJQUNGLENBQUM7RUFDTCxDQUFDLENBQUM7RUFFRixPQUFPTyxLQUFLO0FBQ2QsQ0FBQztBQUVNLE1BQU1TLFlBQVksR0FBSUMsTUFBTSxJQUFLO0VBQ3RDLE1BQU1WLEtBQUssR0FBR2hCLDhDQUFPLENBQUMsTUFBTVksUUFBUSxDQUFDYyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7RUFDakQsTUFBTUMsU0FBUyxHQUFHM0IsOENBQU8sQ0FBQyxNQUFNRSwyREFBWSxDQUFDYyxLQUFLLENBQUMsRUFBRSxDQUFDQSxLQUFLLENBQUMsQ0FBQztFQUU3RCxPQUFPO0lBQ0xBLEtBQUs7SUFDTFc7RUFDRixDQUFDO0FBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkR5RDtBQUNsQjtBQUVqQyxNQUFNMXNCLG9CQUFvQixHQUFHLE1BQUFBLENBQUEsS0FBWTtFQUM5QyxJQUFJO0lBQ0YsT0FBTyxNQUFNNHNCLGdHQUFjLENBQUMsQ0FBQztFQUMvQixDQUFDLENBQUMsT0FBTzluQixDQUFDLEVBQUU7SUFDVm1VLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHdEQUF3RCxFQUFFcFUsQ0FBQyxDQUFDO0lBQ3hFK25CLDJEQUF1QixDQUFDL25CLENBQUMsQ0FBQztJQUMxQjZuQiw0RkFBVSxDQUFDLENBQUM7SUFDWixPQUFPM29CLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7RUFDekI7QUFDRixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmTSxNQUFNOG9CLG9CQUFvQixHQUFHLEVBQUU7QUFDL0IsTUFBTUMsbUJBQW1CLEdBQUcsRUFBRTtBQUM5QixNQUFNN3NCLGFBQWEsR0FBRyxDQUFDO0FBQ3ZCLE1BQU04c0IsZUFBZSxHQUFHLElBQUk7QUFDNUIsTUFBTUMsT0FBTyxHQUFHLENBQUM7QUFDakIsTUFBTWh0QixzQkFBc0IsR0FBRyxDQUFDO0FBQ2hDLE1BQU1ELFVBQVUsR0FBRyxDQUFDO0FBQ3BCLE1BQU15VCx3QkFBd0IsR0FBRyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUEo7QUFDSztBQU1yQjtBQUVkLE1BQU1yQyxjQUFjLEdBQUdBLENBQUNyTyxLQUFLLEVBQUFJLElBQUEsS0FBdUM7RUFBQSxJQUFyQztJQUFFZ3FCLE1BQU0sR0FBRyxPQUFPO0lBQUUsR0FBRzVTO0VBQVEsQ0FBQyxHQUFBcFgsSUFBQTtFQUNwRSxNQUFNaXFCLGNBQWMsR0FBRztJQUNyQmpiLFFBQVEsRUFBRSxLQUFLO0lBQ2ZrYixxQkFBcUIsRUFBRSxDQUFDO0lBQ3hCQyxxQkFBcUIsRUFBRTtFQUN6QixDQUFDO0VBRUQsTUFBTUMsU0FBUyxHQUFHLElBQUlDLElBQUksQ0FBQ0MsWUFBWSxDQUFDTixNQUFNLEVBQUU7SUFDOUM3VyxLQUFLLEVBQUUsVUFBVTtJQUNqQixHQUFHOFcsY0FBYztJQUNqQixHQUFHN1M7RUFDTCxDQUFDLENBQUM7RUFFRixPQUFPZ1QsU0FBUyxDQUFDRyxNQUFNLENBQUMzcUIsS0FBSyxDQUFDO0FBQ2hDLENBQUM7QUFFTSxNQUFNdVYsZ0JBQWdCLEdBQUdBLENBQUNxVixRQUFRLEVBQUVDLFFBQVEsS0FBSztFQUN0RCxJQUFJQSxRQUFRLEVBQ1YsT0FBT1YseURBQ0YsQ0FBQ1MsUUFBUSxHQUFHWCx1REFBZSxFQUFFWSxRQUFRLENBQUMsQ0FDeENGLE1BQU0sQ0FBQyxlQUFlLENBQUM7RUFFNUIsT0FBT1IsMkRBQVcsQ0FBQ1MsUUFBUSxDQUFDLENBQUNELE1BQU0sQ0FBQyxlQUFlLENBQUM7QUFDdEQsQ0FBQztBQUVNLE1BQU1qZSxzQkFBc0IsR0FBSTdMLE1BQU0sSUFBSztFQUNoRCxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsTUFBTW1xQixRQUFRLEdBQUdiLHNEQUFNLENBQUN0cEIsTUFBTSxDQUFDb3FCLFVBQVUsR0FBR2hCLHVEQUFlLENBQUMsQ0FBQ2EsRUFBRSxDQUM3RGpxQixNQUFNLENBQUNxcUIsWUFDVCxDQUFDO0VBQ0QsTUFBTUMsTUFBTSxHQUFHaEIsc0RBQU0sQ0FBQ3RwQixNQUFNLENBQUN1cUIsUUFBUSxHQUFHbkIsdURBQWUsQ0FBQyxDQUFDYSxFQUFFLENBQ3pEanFCLE1BQU0sQ0FBQ3FxQixZQUNULENBQUM7RUFDRCxNQUFNRyxJQUFJLEdBQUdGLE1BQU0sQ0FBQ0csSUFBSSxDQUFDTixRQUFRLEVBQUUsTUFBTSxDQUFDO0VBQzFDLElBQUlPLGVBQWUsR0FBRyxlQUFlO0VBQ3JDLElBQUlDLGFBQWEsR0FBRyxlQUFlO0VBQ25DLElBQUlSLFFBQVEsQ0FBQ1MsSUFBSSxDQUFDLENBQUMsS0FBS04sTUFBTSxDQUFDTSxJQUFJLENBQUMsQ0FBQyxFQUFFRixlQUFlLEdBQUcsU0FBUztFQUNsRSxJQUFJUCxRQUFRLENBQUNVLEtBQUssQ0FBQyxDQUFDLEtBQUtQLE1BQU0sQ0FBQ08sS0FBSyxDQUFDLENBQUMsRUFBRUYsYUFBYSxHQUFHLFVBQVU7RUFFbkUsTUFBTUcsU0FBUyxHQUFHWCxRQUFRLENBQUNMLE1BQU0sQ0FBQ1ksZUFBZSxDQUFDO0VBQ2xELE1BQU1LLE9BQU8sR0FBR1QsTUFBTSxDQUFDUixNQUFNLENBQUNhLGFBQWEsQ0FBQztFQUU1QyxJQUFJSCxJQUFJLEdBQUduQiwrQ0FBTyxFQUFFLE9BQU8sR0FBR3lCLFNBQVMsTUFBTUMsT0FBTyxFQUFFO0VBRXRELE9BQU9ELFNBQVM7QUFDbEIsQ0FBQztBQUVNLE1BQU12ZCxvQkFBb0IsR0FBRzFOLEtBQUEsSUFBZ0M7RUFBQSxJQUEvQjtJQUFFVSxLQUFLO0lBQUVQLE1BQU07SUFBRTBOO0VBQVEsQ0FBQyxHQUFBN04sS0FBQTtFQUM3RCxJQUFJLENBQUNVLEtBQUssSUFBSSxDQUFDUCxNQUFNLElBQUksQ0FBQzBOLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztFQUU1QyxNQUFNO0lBQUVvWSxlQUFlO0lBQUVyWCxlQUFlO0lBQUVDLFlBQVk7SUFBRXNjO0VBQU8sQ0FBQyxHQUFHenFCLEtBQUs7RUFDeEUsTUFBTTtJQUFFMHFCO0VBQWEsQ0FBQyxHQUFHanJCLE1BQU07RUFFL0IsTUFBTStOLGFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQUltZCxtQkFBbUIsR0FBRyxDQUFDO0VBRTNCLE1BQU1DLGNBQWMsR0FBRztJQUFFNWMsUUFBUSxFQUFFaE8sS0FBSyxDQUFDZ087RUFBUyxDQUFDO0VBRW5EN04sTUFBTSxDQUFDQyxJQUFJLENBQUNKLEtBQUssQ0FBQzZxQiw4QkFBOEIsQ0FBQyxDQUFDaGUsR0FBRyxDQUFFL0ssTUFBTSxJQUFLO0lBQ2hFLE1BQU1ncEIsVUFBVSxHQUFHSixZQUFZLENBQUMvVixJQUFJLENBQUVvVyxFQUFFLElBQUtBLEVBQUUsQ0FBQ3RzQixJQUFJLEtBQUtxRCxNQUFNLENBQUM7SUFDaEUwTCxhQUFhLENBQUNoUCxJQUFJLENBQUM7TUFDakJ3c0IsY0FBYyxFQUFFRixVQUFVLENBQUN2cUIsRUFBRTtNQUM3QnNOLFdBQVcsRUFBRWlkLFVBQVU7TUFDdkJyc0IsSUFBSSxFQUFFcUQsTUFBTTtNQUNaOEwsR0FBRyxFQUFFNU4sS0FBSyxDQUFDNnFCLDhCQUE4QixDQUFDL29CLE1BQU07SUFDbEQsQ0FBQyxDQUFDO0lBQ0Y2b0IsbUJBQW1CLElBQ2pCRyxVQUFVLENBQUNoZCxJQUFJLEdBQUc5TixLQUFLLENBQUM2cUIsOEJBQThCLENBQUMvb0IsTUFBTSxDQUFDO0lBRWhFLE9BQU8wTCxhQUFhO0VBQ3RCLENBQUMsQ0FBQztFQUVGLE1BQU15ZCxhQUFhLEdBQUdoZSxjQUFjLENBQUMwZCxtQkFBbUIsRUFBRUMsY0FBYyxDQUFDO0VBRXpFLE1BQU14ZCxhQUFhLEdBQUdILGNBQWMsQ0FBQ2lCLGVBQWUsRUFBRTBjLGNBQWMsQ0FBQztFQUNyRSxNQUFNdmQsV0FBVyxHQUFHSixjQUFjLENBQUNzWSxlQUFlLEVBQUVxRixjQUFjLENBQUM7RUFDbkUsTUFBTXRkLFVBQVUsR0FBR0wsY0FBYyxDQUFDa0IsWUFBWSxFQUFFeWMsY0FBYyxDQUFDO0VBQy9ELE1BQU1yZCxXQUFXLEdBQUdwTixNQUFNLENBQUMrcUIsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ3ByQixLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQ3JFaU4sY0FBYyxDQUFDd2QsTUFBTSxFQUFFRyxjQUFjLENBQUMsR0FDdEMzZCxjQUFjLENBQUNnZSxhQUFhLEVBQUVMLGNBQWMsQ0FBQztFQUVqRCxPQUFPO0lBQ0x4ZCxhQUFhO0lBQ2JDLFdBQVc7SUFDWEMsVUFBVTtJQUNWQyxXQUFXO0lBQ1hDO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNMEcsZUFBZSxHQUFHQSxDQUFDMUksWUFBWSxFQUFFNUssT0FBTyxLQUFLO0VBQ3hELE1BQU15cUIsTUFBTSxHQUFHN2YsWUFBWSxDQUFDbE4sTUFBTSxDQUFFaW9CLENBQUMsSUFBS0EsQ0FBQyxDQUFDaG1CLEVBQUUsS0FBS0ssT0FBTyxDQUFDO0VBQzNELE9BQU95cUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFM1csYUFBYTtBQUNqQyxDQUFDO0FBRU0sTUFBTWpSLDJCQUEyQixHQUFJNm5CLEVBQUUsSUFBSztFQUNqRCxNQUFNNXNCLEtBQUssR0FBRzRzQixFQUFFLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRzFDLHVEQUFlO0VBQ3ZELE1BQU1scUIsS0FBSyxHQUNUMnNCLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDNUMsNERBQW9CLEVBQUVDLDJEQUFtQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDNURDLHVEQUFlO0VBQ2pCLE9BQU87SUFDTG5xQixLQUFLO0lBQ0xDO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNd1IscUJBQXFCLEdBQUkxUSxNQUFNLElBQUs7RUFDL0MsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBQ3hCLE9BQU9BLE1BQU0sQ0FBQytyQix5QkFBeUIsSUFDckMvckIsTUFBTSxDQUFDK3JCLHlCQUF5QixHQUFHL3JCLE1BQU0sQ0FBQ3VxQixRQUFRLEdBQ2hEdnFCLE1BQU0sQ0FBQytyQix5QkFBeUIsR0FDaEMvckIsTUFBTSxDQUFDdXFCLFFBQVE7QUFDckIsQ0FBQztBQUVNLE1BQU15QixrQkFBa0IsR0FBR0EsQ0FBQSxLQUNoQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxJQUFJaG5CLElBQUksQ0FBQyxDQUFDLEdBQUdra0IsdURBQWUsQ0FBQztBQUVwQyxNQUFNK0MsTUFBTSxHQUFHQSxDQUFBLEtBQU0sQ0FBQzV0QixRQUFRLEVBQUVxQixRQUFRLEtBQUs7RUFDbEQsTUFBTTtJQUFFd3NCO0VBQVcsQ0FBQyxHQUFHeHNCLFFBQVEsQ0FBQyxDQUFDO0VBQ2pDLE9BQU93c0IsVUFBVSxFQUFFQyxNQUFNLElBQUksSUFBSSxHQUFHTCxrQkFBa0IsQ0FBQyxDQUFDLEdBQUdJLFVBQVUsRUFBRUMsTUFBTTtBQUMvRSxDQUFDO0FBRU0sTUFBTTFiLE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0VBQzFCLE1BQU1wUyxRQUFRLEdBQUdpTix3REFBVyxDQUFDLENBQUM7RUFFOUIsT0FBT2pOLFFBQVEsQ0FBQzR0QixNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeElEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQnJmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN3UDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVHhQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDK2pCOzs7Ozs7Ozs7Ozs7Ozs7QUN2Qi9qQjtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0g1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDc2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCdGE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDK0U7Ozs7Ozs7Ozs7O0FDSi9FOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ2Y7QUFDWDtBQUNHO0FBQ29CO0FBQ0M7QUFBQTtBQUU1RCxNQUFNSyx1QkFBdUIsR0FBSXBaLEtBQUssSUFBSztFQUN6QyxNQUFNO0lBQUU0VSxRQUFRO0lBQUV5RSxZQUFZO0lBQUV6c0IsTUFBTTtJQUFFRixVQUFVO0lBQUV1QixJQUFJO0lBQUUwbUI7RUFBUyxDQUFDLEdBQUczVSxLQUFLO0VBQzVFLE1BQU07SUFBRXpPO0VBQUUsQ0FBQyxHQUFHakIsNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLE1BQU07SUFBRXdrQixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1J5RSxZQUFZO0lBQ1p6c0IsTUFBTTtJQUNOcUIsSUFBSTtJQUNKdkIsVUFBVTtJQUNWaW9CO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTTJFLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTXJzQixNQUFNLEdBQUcsSUFBSXNzQixlQUFlLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHMXNCLE1BQU0sQ0FBQzJzQixHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRTdFLEtBQUssQ0FBQzNwQixRQUFRLENBQUM7TUFBRU8sSUFBSSxFQUFFdkMsaURBQVc7TUFBRXlFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRURzRixnREFBUyxDQUFDLE1BQU07SUFDZDRoQixLQUFLLENBQUMzcEIsUUFBUSxDQUFDMEUsbURBQVMsQ0FBQ2pELE1BQU0sQ0FBQyxDQUFDO0VBQ25DLENBQUMsRUFBRSxDQUFDQSxNQUFNLENBQUMsQ0FBQztFQUVac0csZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Q0aEIsS0FBSyxDQUFDM3BCLFFBQVEsQ0FBQzZDLGlEQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQy9CLENBQUMsRUFBRSxDQUFDQSxJQUFJLENBQUMsQ0FBQztFQUVWLG9CQUNFOEMsc0RBQUEsQ0FBQ21vQixpREFBUTtJQUFDcEUsS0FBSyxFQUFFQSxLQUFNO0lBQUE3aUIsUUFBQSxlQUNyQmhCLHVEQUFBLENBQUNrb0Isd0VBQVc7TUFDVlUsWUFBWSxFQUFFUCxnQkFBaUI7TUFDL0JyRyxPQUFPLEVBQUUsSUFBSztNQUNkd0MsU0FBUyxFQUFFQSxTQUFVO01BQUF4akIsUUFBQSxnQkFFckJsQixzREFBQSxDQUFDcUMsOENBQUc7UUFBQ2YsRUFBRSxFQUFFO1VBQUUwRCxPQUFPLEVBQUU7WUFBRWtDLEVBQUUsRUFBRSxDQUFDO1lBQUUwQixFQUFFLEVBQUUsQ0FBQztZQUFFQyxFQUFFLEVBQUU7VUFBRTtRQUFFLENBQUU7UUFBQTNILFFBQUEsZUFDNUNsQixzREFBQTtVQUFBa0IsUUFBQSxFQUFLVixDQUFDLENBQUMsY0FBYztRQUFDLENBQUs7TUFBQyxDQUN6QixDQUFDLGVBQ05SLHNEQUFBLENBQUMySCxtRUFBZTtRQUNka2MsUUFBUSxFQUFFQSxRQUFTO1FBQ25CeUUsWUFBWSxFQUFFQSxZQUFhO1FBQzNCenNCLE1BQU0sRUFBRUEsTUFBTztRQUNmRixVQUFVLEVBQUVBO01BQVcsQ0FDeEIsQ0FBQztJQUFBLENBQ1M7RUFBQyxDQUNOLENBQUM7QUFFZixDQUFDO0FBRUQwc0IsdUJBQXVCLENBQUNybUIsU0FBUyxHQUFHO0VBQ2xDNmhCLFFBQVEsRUFBRXhrQiwwREFBZ0I7RUFDMUJpcEIsWUFBWSxFQUFFanBCLDBEQUFnQjtFQUM5QnhELE1BQU0sRUFBRXdELDBEQUFnQjtFQUN4QjFELFVBQVUsRUFBRTBELDBEQUFnQjtFQUM1Qm5DLElBQUksRUFBRW1DLDBEQUFnQnVMO0FBQ3hCLENBQUM7QUFFRCxpRUFBZXlkLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0RhdGVwaWNrZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERlbGVnYXRpb25GaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGdldFJlcXVlc3QsXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGNyZWF0ZUFjdGlvbixcbiAgc3RvcExvYWRpbmcsXG4gIHN0YXJ0TG9hZGluZyxcbiAgcHV0UmVxdWVzdFxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIEZJUlNUX1BBR0UsXG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIE9ORV9QQUdFX05FWFRcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUUyA9IFwiR0VUX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIvU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfVtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9PUAke2ZpbHRlck9iai52YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PlxuICBkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiO1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fSxcbiAgICBuZXh0ID0gZmFsc2VcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlOiBuZXh0ID8gcGFnZSArIE9ORV9QQUdFX05FWFQgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlcik7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQcm9maWxlID1cbiAgKHByb2ZpbGUpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBpZHBCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSkoKSk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX0lEUF9QUk9GSUxFKSxcbiAgICAgIC8vIFRPRE86IG5lZWQgSURQX0JBU0VfVVJMXG4gICAgICBgJHtpZHBCYXNlVXJsfS9hcGkvdjEvdXNlcnMvbWVgLFxuICAgICAgcHJvZmlsZSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4gcGF5bG9hZClcbiAgICAgIC5jYXRjaCgoKSA9PiBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFKSgpKSk7XG4gIH07XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7IHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHVzZXJTdGF0ZTogeyB1c2VyUHJvZmlsZSB9LFxuICAgICAgc3VtbWl0XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBpZiAoIXVzZXJQcm9maWxlLmlkKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGZpbHRlcjogXCJzdGF0dXM9PVBhaWRcIixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvcmRlci5pZCxvcmRlci5vd25lcl9maXJzdF9uYW1lLG9yZGVyLm93bmVyX2xhc3RfbmFtZSxvcmRlci5vd25lcl9lbWFpbCxvd25lci5maXJzdF9uYW1lLG93bmVyLmxhc3RfbmFtZSxvd25lci5zdGF0dXNcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHsgb3JkZXJJZCwgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIG9yZGVyU3RhdGU6IHsgY3VycmVudF9wYWdlOiBvcmRlclBhZ2UgfSxcbiAgICAgIHRpY2tldFN0YXRlOiB7IGN1cnJlbnRfcGFnZTogdGlja2V0UGFnZSB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuXG4gICAgICAgIGlmICh0aWNrZXQub3JkZXJfaWQpIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyT3JkZXJzKHsgcGFnZTogb3JkZXJQYWdlIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyVGlja2V0cyh7IHBhZ2U6IHRpY2tldFBhZ2UgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICB9O1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFN1bW1pdCA9IChzdW1taXQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVU1NSVQpKHN1bW1pdCkpO1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7XG4gICAgICAgIHN1bW1pdCxcbiAgICAgICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gICAgICB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiAyMCxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7dXNlclByb2ZpbGUuYXR0ZW5kZWVfaWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQWRhcHRlckRheWpzIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Qcm92aWRlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9EQVRFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RhdGVQaWNrZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgY29uc3QgW2RhdGVWYWx1ZSwgc2V0RGF0ZVZhbHVlXSA9IHVzZVN0YXRlKG5vdyk7XG4gIGNvbnN0IG9uRGF0ZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBzZXREYXRlVmFsdWUodmFsKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsLiRkKTtcbiAgICBjb25zdCB7IGxvd2VyLCB1cHBlciB9ID0gZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzKGRhdGUpO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIHR5cGU6IEZJTFRFUl9WQVJfREFURSxcbiAgICAgIG5hbWU6IFwiY3JlYXRlZFwiLFxuICAgICAgZGF0ZSxcbiAgICAgIGxvd2VyLFxuICAgICAgdXBwZXJcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgb25SZXNldEFjdGlvbiA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgc2V0RGF0ZVZhbHVlKG5vdyk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyRGF0ZUxhYmVsfT57dChcImZpbHRlci5wdXJjaGFzZWRfb25cIil9PC9kaXY+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlUGlja2VyQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZXBpY2tlckNsb3NlfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVzZXRBY3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxMb2NhbGl6YXRpb25Qcm92aWRlciBkYXRlQWRhcHRlcj17QWRhcHRlckRheWpzfT5cbiAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FsZW5kYXJEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uRGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Mb2NhbGl6YXRpb25Qcm92aWRlcj5cbiAgICAgIDwvU3RhY2s+XG4gICAgPC8+XG4gICk7XG59XG5cbkJhc2ljRGF0ZVBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IEJhc2ljRGF0ZVBpY2tlciBmcm9tIFwiLi9EYXRlcGlja2VyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICB7LyoqIGN1cnJlbnRseSBqdXN0IHNob3dpbmcgXCIxXCIgYmVjYXVzZSB3ZSdyZSBjdXJyZW50bHkgb25seSBmaWx0ZXJpbmcgb25lIGNyaXRlcmlhIC0gY3JlYXRlZCBkYXRlICovfVxuICAgICAgICB7ZmlsdGVyTnVtQWN0aXZlICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTnVtQWN0aXZlfT4xPC9kaXY+fVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RGF0ZVBpY2tlciA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxCYXNpY0RhdGVQaWNrZXJcbiAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XG4gICAgICAgICAgICBvblJlc2V0KCk7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoZmFsc2UpO1xuICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgb25GaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZSh0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuZnVuY3Rpb24gU2VhcmNoKHsgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbmFtZTogXCJudW1iZXJcIixcbiAgICAgICAgdHlwZTogRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgICBvblJlc2V0KCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gU29ydCh7IG9uU29ydCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH0+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiZGVzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImFzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXJTb3J0U2VhcmNoKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICByZXR1cm4gKFxuICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIHhzPXs2fVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgZ2FwPXsyfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbkZpbHRlclNvcnRTZWFyY2gucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlclNvcnRTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBGaWx0ZXJTb3J0U2VhcmNoIGZyb20gXCIuL0ZpbHRlclNvcnRTZWFyY2hcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRVc2VyT3JkZXJzLCByZXNldEZpbHRlciB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE15T3JkZXJzVGlja2V0cygpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBtZW1iZXJPcmRlcnMsXG4gICAgb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgb3JkZXJzX3RvdGFsXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBbaGFzTW9yZSwgc2V0SGFzTW9yZV0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW3NlYXJjaE5leHQsIHNldFNlYXJjaE5leHRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbc29ydCwgc2V0U29ydF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNlYXJjaE5leHQoZmFsc2UpO1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlOiBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHNlYXJjaE5leHQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApLnRoZW4oKHJlcykgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZXMucmVzcG9uc2U/LmRhdGE/Lmxlbmd0aCA+IG9yZGVyc19wZXJfcGFnZSAmJlxuICAgICAgICBtZW1iZXJPcmRlcnMubGVuZ3RoID09PSBvcmRlcnNfdG90YWxcbiAgICAgIClcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEoKTtcbiAgfSwgW2ZpbHRlciwgc29ydCwgc2VhcmNoTmV4dF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVzZXIgJiYgc3VtbWl0KSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucygpKTtcbiAgICB9XG4gIH0sIFt1c2VyLCBzdW1taXRdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXIpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoZmlsdGVyKTtcbiAgfTtcbiAgY29uc3Qgb25Tb3J0ID0gKGRpcmVjdGlvbikgPT4ge1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U29ydCh7IGRpcmVjdGlvbiwgbmFtZTogXCJjcmVhdGVkXCIgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEZpbHRlclNvcnRTZWFyY2hcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L0JveD5cbiAgICAgIHttZW1iZXJPcmRlcnMubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnMubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IHNldFNlYXJjaE5leHQodHJ1ZSl9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdCBrZXk9e29yZGVyLmlkfSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT57dChcIm9yZGVycy5ub19vcmRlcnNcIil9PC9Cb3g+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnlUYWJsZSh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZGlzY291bnRUb3RhbCwgcmVmdW5kVG90YWwsIHRheGVzVG90YWwsIGFtb3VudFRvdGFsLCB0aWNrZXRTdW1tYXJ5IH0gPVxuICAgIGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KTtcbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFJlZnVuZEVtYWlsU3VwcG9ydCh7XG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25FbWFpbFN1cHBvcnRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJTdW1tYXJ5KHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfSBzeD17eyBwdDogNCwgcHg6IDQgfX0+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17KCkgPT4ge319XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4ge319XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHsgdGlja2V0cywgdG90YWwsIG9uUGFnaW5hdGVDbGljaywgc3VtbWl0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0cyBrZXk9e3RpY2tldC5pZH0gdGlja2V0PXt0aWNrZXR9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgKSl9XG4gICAgICB7dGlja2V0cz8ubGVuZ3RoID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259IG9uQ2xpY2s9e29uVmlld01vcmV9PlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IHRvdGFsID8gKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufSBvbkNsaWNrPXtvblZpZXdMZXNzfT5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlLCB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufT5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn0gb25DbGljaz17b25PcGVuQ2xpY2t9PlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHsgdGlja2V0LCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBbb3BlblRpY2tldCwgc2V0T3BlblRpY2tldF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgeyBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZCBrZXk9e3RpY2tldC5pZH0gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfSBjb250YWluZXI+XG4gICAgICA8R3JpZCB4cz17N30gcGFkZGluZz17Mn0gaXRlbSBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfT5cbiAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXs1fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogMiwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWwgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9Pnt0aWNrZXQub3duZXI/LmVtYWlsfTwvQm94PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIHRpY2tldC5pc19hY3RpdmUgJiYgKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApXG4gICAgICAgICl9XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwicm93XCIgeHM9ezEyfSBsZz17Nn0gYWxpZ25JdGVtcz1cImNlbnRlclwiIGl0ZW0+XG4gICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBwYWRkaW5nPXsyfSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGV9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9eygpID0+IHNldE9wZW5UaWNrZXQodGlja2V0KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXQ9e29wZW5UaWNrZXR9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5UaWNrZXQobnVsbCl9XG4gICAgICAvPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5mdW5jdGlvbiBPcmRlck51bWJlcih7XG4gIG51bWJlcixcbiAgY29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSBmYWxzZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMub3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXROb0NvbnRhaW5lcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7bnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAge2NvcHkgJiYgKFxuICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobnVtYmVyKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk9yZGVyTnVtYmVyLnByb3BUeXBlcyA9IHtcbiAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJOdW1iZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFRhYlBhbmVsKHByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgb3JkZXIsXG4gIHRvdGFsLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmRldGFpbHNSZXF1aXJlZExhYmVsfT5cbiAgICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvcjogXCIjRkY5ODAwXCIgfX0gLz5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgdGV4dENvbG9yPVwiIzAwMFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgICBUYWJJbmRpY2F0b3JQcm9wcz17e1xuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5IG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IHRpY2tldHM9e3RpY2tldHN9IC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsyfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSB0aWNrZXRzPXt0aWNrZXRzfSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldE9yZGVyVGlja2V0cywgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3QocHJvcHMpIHtcbiAgY29uc3QgeyBzdW1taXQsIG9yZGVyIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgcGVyX3BhZ2UsIGxhc3RfcGFnZSwgbWVtYmVyT3JkZXJzIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuICBjb25zdCBmZXRjaFRpY2tldHNCeU9yZGVyID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgY3VycmVudF9wYWdlOiBsYXN0X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlXG4gICAgICB9KVxuICAgICkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hUaWNrZXRzQnlPcmRlcigpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMSxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb30+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17b3JkZXIubnVtYmVyfSBjb3B5IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17Z2V0T3JkZXJUaWNrZXRzKG1lbWJlck9yZGVycywgb3JkZXIuaWQpfVxuICAgICAgICAgIHRvdGFsPXtvcmRlci50aWNrZXRzX3RvdGFsfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRWYWx1ZSB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU/Lm5hbWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCwgY2hpbGRyZW4pID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIGlmICghcnVsZVJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgaWYgKCFydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gdGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufVxuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzID0gKHsgZm9ybWlrIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2ZpcnN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9sYXN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwubGFzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZWxlZ2F0aW9uRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERlbGVnYXRpb25GaWVsZHM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmcm9tIFwiLi4vVGlja2V0RGVsZWdhdGlvbkZpZWxkc1wiO1xuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbGxvd3NEZWxlZ2F0aW9uLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGVtYWlsXCIpXG4gICAgICAuZW1haWwoXCJFbWFpbCBpbnZhbGlkXCIpXG4gICAgICAucmVxdWlyZWQoXCJFbWFpbCBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGNvbXBhbnlcIilcbiAgICAgIC5yZXF1aXJlZChcIkNvbXBhbnkgaXMgcmVxdWlyZWRcIilcbiAgfTtcblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBcIkZpZWxkIG11c3QgYmUgY2hlY2tlZFwiKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoXCJUaGlzIHF1ZXN0aW9uIGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG4vLyBvbiBmb3JtaWsgd2UgbmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJxdWVzdGlvbnMgd2l0aCBhIHZhbHVlXG4vLyBvbiBzdWJtaXQsIHdlIG9ubHkgbmVlZCByZWxldmFudCBhbnN3ZXJzXG5jb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgbWFuYWdlcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06IG93bmVyLmVtYWlsLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdOiBvd25lci5maXJzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV06IG93bmVyLmxhc3RfbmFtZSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV06IG93bmVyLmNvbXBhbnksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF06IG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWRcbiAgfTtcblxuICBpZiAoYWxsb3dzRGVsZWdhdGlvbikge1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSBtYW5hZ2VyPy5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0gbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhydWxlLnN1Yl9xdWVzdGlvbi5uYW1lKTtcbiAgICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paykgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgc3VibWl0Q291bnQgfSA9IGZvcm1paztcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQXJyYXkubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3JBcnJheVswXX0nXWApO1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xuICAgIC8vIFNjcm9sbCB0byBmaXJzdCBrbm93biBlcnJvciBpbnRvIHZpZXdcbiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6IFwic21vb3RoXCIsIGJsb2NrOiBcImNlbnRlclwiIH0pO1xuICB9LCBbc3VibWl0Q291bnRdKTtcbn07XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdGlja2V0TWFuYWdlciA9IHRpY2tldD8ubWFuYWdlcjtcbiAgLyogRElTQUJMRSBERUxFR0FUSU9OIEZUTSAqL1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0aW9uID0gdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlICYmIGZhbHNlO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7IHN1bW1pdCwgdGlja2V0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9LFxuICAgIGV4dHJhUXVlc3Rpb25zXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXIub3duZXJfaWQgPT09IHVzZXJQcm9maWxlLmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZS5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJTQVZFOiBcIiwgdmFsKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEcmF3ZXJcbiAgICAgIG9wZW49eyEhdGlja2V0fVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IFwiYXV0b1wiLCBtYXhXaWR0aDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuXG4gICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnNlbmRCdG59PlxuICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgIDxPcmRlck51bWJlclxuICAgICAgICAgICAgbnVtYmVyPXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICBjb3B5XG4gICAgICAgICAgICB0cnVuY2F0ZWRcbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICA8L0RyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUaWNrZXRTdGF0dXMoeyB0aWNrZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kX3JlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB0aWNrZXRfc3RhdHVzX2luY29tcGxldGUgPSB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCI7XG4gIGNvbnN0IHRpY2tldF91bmFzc2lnbmVkID0gdGlja2V0Lm93bmVyX2lkID09PSAwO1xuICBjb25zdCB0aWNrZXRfY29tcGxldGUgPSB0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIjtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kX3JlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRfcmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPVxuICAgIHRpY2tldC5maW5hbF9hbW91bnQgPiAwICYmIHRpY2tldC5maW5hbF9hbW91bnQgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50O1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldC50aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgc3RhdHVzICE9PSBTVEFUVVNfVU5BU1NJR05FRCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGVcbiAgfTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1VNTUlULFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgaXNPcmRlckxvYWRpbmc6IGZhbHNlLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAxLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMSxcbiAgdGlja2V0X2xhc3RfcGFnZTogMSxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDBcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1VNTUlUOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHN1bW1pdDogcGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4ubWVtYmVyT3JkZXJzLCAuLi5kYXRhXSxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyLmlkKTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7Li4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhfVxuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoeyBjbGllbnRJZCwgbG9naW5VcmwsIHN1bW1pdCwgYXBpQmFzZVVybCB9KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdlOjogZ2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSAzO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgT05FX0RBWVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQgfHwgIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCB0YXhlc19hbW91bnQsIGFtb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzLmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCB0YXhlc1RvdGFsID0gZm9ybWF0Q3VycmVuY3kodGF4ZXNfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgdGF4ZXNUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19Sb2ltUlwiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19vb0kwVlwiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19pbV9qaFwiO1xudmFyIF80ID0gXCJjb250YWluZXJfX19OM1k0WFwiO1xudmFyIF81ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fSlcybE9cIjtcbnZhciBfNiA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVjlnSENcIjtcbnZhciBfNyA9IFwiZmlsdGVyQ29udGFpbmVyX19fckdwWVZcIjtcbnZhciBfOCA9IFwiZmlsdGVyRGF0ZUxhYmVsX19faWZENHBcIjtcbnZhciBfOSA9IFwiZmlsdGVySWNvbl9fX2wyMUtJXCI7XG52YXIgX2EgPSBcImZpbHRlckxhYmVsX19fX1Awd25cIjtcbnZhciBfYiA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX1ZtZEdxXCI7XG52YXIgX2MgPSBcImZpbHRlck51bUFjdGl2ZV9fX1Z1SENKXCI7XG52YXIgX2QgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19hckJ2UVwiO1xudmFyIF9lID0gXCJsYWJlbF9fX3lORnlqXCI7XG52YXIgX2YgPSBcInNob3dEYXRlUGlja2VyX19fVXBRYnBcIjtcbnZhciBfMTAgPSBcInNvcnRDb250YWluZXJfX19sUnNqVVwiO1xudmFyIF8xMSA9IFwic29ydEljb25fX19mVlY1S1wiO1xudmFyIF8xMiA9IFwic29ydExhYmVsX19fVXFMVENcIjtcbnZhciBfMTMgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fY21uQkRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNvbnRhaW5lclwiLCBfNSBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzYgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzcgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgXzggYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgXzkgYXMgXCJmaWx0ZXJJY29uXCIsIF9hIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9jIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9kIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfZSBhcyBcImxhYmVsXCIsIF9mIGFzIFwic2hvd0RhdGVQaWNrZXJcIiwgXzEwIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTEgYXMgXCJzb3J0SWNvblwiLCBfMTIgYXMgXCJzb3J0TGFiZWxcIiwgXzEzIGFzIFwic29ydExpc3RDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyT3JkZXJOdW1iZXJfX19ScUNiQ1wiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkTnVtYmVyX19fcHF5X0lcIjtcbnZhciBfNyA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF84ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyT3JkZXJOdW1iZXJcIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkTnVtYmVyXCIsIF83IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzggYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfMyA9IFwiY29weUljb25fX19Oa0hHT1wiO1xudmFyIF80ID0gXCJkZXRhaWxzUmVxdWlyZWRMYWJlbF9fX1kya29yXCI7XG52YXIgXzUgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgXzYgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfNyA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF84ID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF85ID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldE5vQ29udGFpbmVyX19fdnFvaE5cIjtcbnZhciBfYiA9IFwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWRfX19IWG1kd1wiO1xudmFyIF9jID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF9kID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgX2UgPSBcInJldmVyc2VkX19fREZlYV9cIjtcbnZhciBfZiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTEgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMiA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMyA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTUgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJibGFja0J1dHRvblwiLCBfMyBhcyBcImNvcHlJY29uXCIsIF80IGFzIFwiZGV0YWlsc1JlcXVpcmVkTGFiZWxcIiwgXzUgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzYgYXMgXCJsYWJlbFwiLCBfNyBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF84IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF85IGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9hIGFzIFwib3JkZXJUaWNrZXROb0NvbnRhaW5lclwiLCBfYiBhcyBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkXCIsIF9jIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9kIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2UgYXMgXCJyZXZlcnNlZFwiLCBfZiBhcyBcInRhYkJ1dHRvbnNcIiwgXzEwIGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTEgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xMiBhcyBcInRpY2tldE5vXCIsIF8xMyBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzE0IGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMTUgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xNiBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2FuY2VsQnRuX19fZ2dDZGpcIjtcbnZhciBfNiA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF83ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfOCA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF85ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgX2EgPSBcImZvb3Rlcl9fX05JTTdkXCI7XG52YXIgX2IgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2MgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfZCA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfZSA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZiA9IFwic2F2ZUJ0bl9fX05wT0VWXCI7XG52YXIgXzEwID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfMTEgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzEzID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xNCA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2FuY2VsQnRuXCIsIF82IGFzIFwiY2xvc2VCdG5cIiwgXzcgYXMgXCJjb3B5QnRuXCIsIF84IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzkgYXMgXCJkb3dubG9hZEJ0blwiLCBfYSBhcyBcImZvb3RlclwiLCBfYiBhcyBcImhlYWRlclwiLCBfYyBhcyBcIm9yZGVyTnVtYmVyXCIsIF9kIGFzIFwicXJDb2RlXCIsIF9lIGFzIFwicXJOb3RlXCIsIF9mIGFzIFwic2F2ZUJ0blwiLCBfMTAgYXMgXCJzZW5kQnRuXCIsIF8xMSBhcyBcInN0YXR1c1wiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzE0IGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi9jb21wb25lbnRzL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFN1bW1pdCwgc2V0VXNlciB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBsb2dpblVybCwgc3VwcG9ydEVtYWlsLCBzdW1taXQsIGFwaUJhc2VVcmwsIHVzZXIsIGNsaWVudElkIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRTdW1taXQoc3VtbWl0KSk7XG4gIH0sIFtzdW1taXRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFVzZXIodXNlcikpO1xuICB9LCBbdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcnMudGl0bGVcIil9PC9oMz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxNeU9yZGVyc1RpY2tldHNcbiAgICAgICAgICBsb2dpblVybD17bG9naW5Vcmx9XG4gICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgYXBpQmFzZVVybD17YXBpQmFzZVVybH1cbiAgICAgICAgLz5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiZ2V0UmVxdWVzdCIsImRlbGV0ZVJlcXVlc3QiLCJjcmVhdGVBY3Rpb24iLCJzdG9wTG9hZGluZyIsInN0YXJ0TG9hZGluZyIsInB1dFJlcXVlc3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiQVNTSUdOX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlciIsInR5cGUiLCJwdXNoIiwibmFtZSIsImxvd2VyIiwidXBwZXIiLCJ2YWx1ZSIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRVc2VyT3JkZXJzIiwiX3JlZiIsInBhZ2UiLCJwZXJQYWdlIiwic29ydCIsIm5leHQiLCJnZXRTdGF0ZSIsIl9yZWYyIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwic3VtbWl0IiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImZpbHRlcnMiLCJpZCIsInRoZW4iLCJwYXlsb2FkIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsInVzZXIiLCJ1cGRhdGVQcm9maWxlIiwicHJvZmlsZSIsIl9yZWYzIiwiaWRwQmFzZVVybCIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJTdGF0ZSIsInVzZXJQcm9maWxlIiwiZXhwYW5kIiwiZmllbGRzIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsIm9yZGVyU3RhdGUiLCJjdXJyZW50X3BhZ2UiLCJvcmRlclBhZ2UiLCJ0aWNrZXRTdGF0ZSIsInRpY2tldFBhZ2UiLCJzZXRTdW1taXQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxMSIsImVuZHBvaW50IiwiYXR0ZW5kZWVfaWQiLCJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiU3RhY2siLCJ1c2VUcmFuc2xhdGlvbiIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0IiwidCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsInZhbCIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwib25DbGljayIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5Iiwib25DaGFuZ2UiLCJwcm9wVHlwZXMiLCJmdW5jIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJCb3giLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsImtleSIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwibGFiZWwiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsInNlYXJjaE5leHQiLCJzZXRTZWFyY2hOZXh0Iiwic2V0RmlsdGVyIiwic2V0U29ydCIsImZldGNoRGF0YSIsInJlcyIsInJlc3BvbnNlIiwiZGF0YSIsIndpZGdldEhlYWRlciIsIm1kIiwibGciLCJzdW1taXRUaXRsZURhdGUiLCJkYXRhTGVuZ3RoIiwic2Nyb2xsVGhyZXNob2xkIiwibWFwIiwibm9PcmRlcnNGb3VuZCIsIkRpdmlkZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRzIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm51bWJlciIsIm9iamVjdCIsImFycmF5T2YiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJvcmRlclN1bW1hcnlCdXR0b24iLCJ2YXJpYW50Iiwic2l6ZSIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJPcmRlck51bWJlciIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsInVzZU5vdyIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIm9wZW5UaWNrZXQiLCJzZXRPcGVuVGlja2V0IiwicmVhc3NpZ25EYXRlIiwib3JkZXJXcmFwcGVyIiwidGlja2V0VGlja2V0VHlwZSIsIm93bmVyIiwidGlja2V0T3duZXJFbWFpbCIsImlzX2FjdGl2ZSIsInRpY2tldE5vIiwiY29weSIsInRydW5jYXRlZCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvbkNsb3NlIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwiZGVmYXVsdFdpZHRoIiwicmV2ZXJzZWQiLCJjbGFzc05hbWVzIiwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWQiLCJvcmRlclRpY2tldE5vQ29udGFpbmVyIiwic3R5bGUiLCJjb3B5SWNvbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsImJvb2wiLCJUYWJzIiwiVGFiIiwiRXJyb3JJY29uIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4Iiwicm9sZSIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsImhhbmRsZUNoYW5nZSIsIl8iLCJuZXdWYWx1ZSIsIm1vcmVEZXRhaWxzIiwiZGV0YWlsc1JlcXVpcmVkTGFiZWwiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0T3JkZXJUaWNrZXRzIiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImxhc3RfcGFnZSIsInRoZW1lIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwibWVtYmVyVGlja2V0cyIsImZpbmQiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY29uc29sZSIsImxvZyIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidGlja2V0c190b3RhbCIsIlRleHRGaWVsZCIsIkF1dG9jb21wbGV0ZSIsIlR5cG9ncmFwaHkiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsImZvcm1payIsInN1bW1pdElkIiwiaXNSZXF1aXJlZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJ0b3VjaGVkIiwic2V0RmllbGRUb3VjaGVkIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiQm9vbGVhbiIsImhlbHBlclRleHQiLCJ1bmRlZmluZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwib25CbHVyIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInNvbWUiLCJ0aXRsZSIsInJlbmRlcklucHV0IiwiZnVsbFdpZHRoIiwicmVxdWlyZWQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJ2IiwiZGlzYWJsZWQiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwiYXJyYXkiLCJub2RlIiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5IiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUJsdXIiLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIndyYXBwZXIiLCJUaWNrZXREZWxlZ2F0aW9uRmllbGRzIiwiZGVsZWdhdGVkX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZWRfbGFzdF9uYW1lIiwidXNlRm9ybWlrIiwieXVwIiwiVGlja2V0T3duZXJGaWVsZHMiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJhbGxvd3NEZWxlZ2F0aW9uIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsInN1YlF1ZXN0aW9uIiwic3ViUXVlc3Rpb25TbHVnIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsIm1hdGNoIiwic2NoIiwicGFyc2VBbnN3ZXJzIiwiYW5zd2VycyIsIm1hbmFnZXIiLCJvbmx5UmVsZXZhbnQiLCJhcmd1bWVudHMiLCJpbml0aWFsVmFsdWVzIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJzdWJBbnN3ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiaXNWYWxpZCIsInN1Ym1pdENvdW50IiwiZXJyb3JBcnJheSIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJvblN1Ym1pdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJleHRyYV9xdWVzdGlvbnMiLCJyZWR1Y2UiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImd1dHRlckJvdHRvbSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZm9vdGVyIiwic2F2ZUJ0biIsImNhbmNlbEJ0biIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRHJhd2VyIiwiSWNvbkJ1dHRvbiIsIkNsb3NlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwib3BlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsInRpY2tldERldGFpbENvbnRhaW5lciIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJzdWJ0aXRsZSIsInFyQ29kZSIsIm1heFdpZHRoIiwicXJfY29kZSIsInZpZXdCb3giLCJxck5vdGUiLCJpc192aXJ0dWFsIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsImlzQWN0aXZlIiwicmVmdW5kX3JlcXVlc3RzIiwiciIsInRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSIsInRpY2tldF91bmFzc2lnbmVkIiwidGlja2V0X2NvbXBsZXRlIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsImdldFN0YXR1cyIsImlzUmVmdW5kYWJsZSIsImZpbmFsX2Ftb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsImFsbG93c0RlbGVnYXRlIiwicHJvbW9fY29kZSIsIm1hbmFnZXJfaWQiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX2xhc3RfcGFnZSIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsImZvcm1lck9yZGVyIiwibyIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJNSUxMSVNFQ19UT19TRUMiLCJPTkVfREFZIiwibW9tZW50IiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInN0YXJ0RGF5Iiwic3RhcnRfZGF0ZSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImVuZF9kYXRlIiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwiTWF0aCIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsIlByb3ZpZGVyIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==