@agilemotion/oui-react-js 2.0.27 → 2.0.29

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.
@@ -8,15 +8,16 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _Utils = _interopRequireDefault(require("../../Utils"));
9
9
  require("./VideoPlayer.css");
10
10
  var _reactPlayer = _interopRequireDefault(require("react-player"));
11
- var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
11
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
12
12
  var _Observable = _interopRequireDefault(require("../../event/Observable"));
13
+ var _documentDownload = require("../../documentDownload");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
- const location = window.location.protocol + '//' + window.location.hostname;
16
16
  const VideoPlayer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef((props, ref) => {
17
17
  const [playing, setPlaying] = (0, _react.useState)(false);
18
18
  const [documentId, setDocumentId] = (0, _react.useState)(false);
19
19
  const [downloadUrl, setDownloadUrl] = (0, _react.useState)(null);
20
+ const [loading, setLoading] = (0, _react.useState)(true);
20
21
  const [disabled, setDisabled] = _react.default.useState(false);
21
22
  const [visible, setVisible] = _react.default.useState(true);
22
23
  _react.default.useEffect(() => {
@@ -36,12 +37,44 @@ const VideoPlayer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default
36
37
  props.handle.api.refresh();
37
38
  }, [documentId]);
38
39
  _react.default.useEffect(() => {}, [playing]);
40
+
41
+ // Fetch the video with header auth (Authorization + idToken + tenant) as a blob object URL. A
42
+ // plain <video> src (what ReactPlayer sets) can't send the tenant header, so the docs service
43
+ // would resolve the wrong S3 bucket and the video would fail to load.
39
44
  _react.default.useEffect(() => {
40
- if (documentId) {
41
- setDownloadUrl(location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download/' + documentId + '?access_token=' + sessionStorage.getItem('accessToken') + '&idToken=' + sessionStorage.getItem('idToken'));
42
- } else {
45
+ // Initial `false` sentinel: the parent hasn't resolved the training data yet, so keep the
46
+ // spinner (loading starts true) rather than flashing "no video".
47
+ if (documentId === false) {
48
+ return;
49
+ }
50
+ if (!documentId) {
51
+ // Parent resolved documentId to empty (undefined/null) — genuinely no video.
43
52
  setDownloadUrl(null);
53
+ setLoading(false);
54
+ return;
44
55
  }
56
+ let active = true;
57
+ let created = null;
58
+ setLoading(true);
59
+ setDownloadUrl(null);
60
+ (0, _documentDownload.fetchDocumentObjectUrl)(documentId).then(objectUrl => {
61
+ if (active) {
62
+ created = objectUrl;
63
+ setDownloadUrl(objectUrl);
64
+ } else {
65
+ URL.revokeObjectURL(objectUrl);
66
+ }
67
+ }).catch(() => {}).finally(() => {
68
+ if (active) {
69
+ setLoading(false);
70
+ }
71
+ });
72
+ return () => {
73
+ active = false;
74
+ if (created) {
75
+ URL.revokeObjectURL(created);
76
+ }
77
+ };
45
78
  }, [documentId]);
46
79
  const api = () => {
47
80
  return {
@@ -73,6 +106,11 @@ const VideoPlayer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default
73
106
  }
74
107
  };
75
108
  };
109
+
110
+ // CDUI-configurable: hide the native download control and block the right-click "save video"
111
+ // menu unless the view explicitly opts in via attributes.allowDownload = true. Default: false
112
+ // (download disabled).
113
+ const allowDownload = _Utils.default.getComponentAttribute(props.config, 'allowDownload', false) === true;
76
114
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, visible && /*#__PURE__*/_react.default.createElement("div", {
77
115
  style: _Utils.default.mergeStyles({}, props.config)
78
116
  }, downloadUrl && /*#__PURE__*/_react.default.createElement("div", {
@@ -87,9 +125,39 @@ const VideoPlayer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default
87
125
  controls: true,
88
126
  width: "100%",
89
127
  height: "100%",
128
+ config: {
129
+ file: {
130
+ attributes: {
131
+ controlsList: allowDownload ? undefined : 'nodownload',
132
+ disablePictureInPicture: !allowDownload,
133
+ onContextMenu: allowDownload ? undefined : e => e.preventDefault()
134
+ }
135
+ }
136
+ },
90
137
  onPlay: () => setPlaying(true),
91
138
  onPause: () => setPlaying(false)
92
- })), (!documentId || !downloadUrl) && /*#__PURE__*/_react.default.createElement("div", {
139
+ })), loading && !downloadUrl && /*#__PURE__*/_react.default.createElement("div", {
140
+ style: {
141
+ width: '100%',
142
+ height: '100%',
143
+ backgroundColor: 'black',
144
+ color: 'white',
145
+ display: 'flex',
146
+ flexDirection: 'column',
147
+ justifyContent: 'center',
148
+ alignItems: 'center',
149
+ borderRadius: '4px'
150
+ }
151
+ }, /*#__PURE__*/_react.default.createElement(_CircularProgress.default, {
152
+ size: 40,
153
+ style: {
154
+ color: 'white'
155
+ }
156
+ }), /*#__PURE__*/_react.default.createElement("div", {
157
+ style: {
158
+ marginTop: '12px'
159
+ }
160
+ }, "Loading video\u2026")), !downloadUrl && !loading && /*#__PURE__*/_react.default.createElement("div", {
93
161
  style: {
94
162
  width: '100%',
95
163
  height: '100%',
@@ -103,4 +171,4 @@ const VideoPlayer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default
103
171
  }, "NO TRAINING VIDEO AVAILABLE")));
104
172
  }));
105
173
  var _default = exports.default = VideoPlayer;
106
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0UGxheWVyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9PYnNlcnZhYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibG9jYXRpb24iLCJ3aW5kb3ciLCJwcm90b2NvbCIsImhvc3RuYW1lIiwiVmlkZW9QbGF5ZXIiLCJSZWFjdCIsIm1lbW8iLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJyZWYiLCJwbGF5aW5nIiwic2V0UGxheWluZyIsInVzZVN0YXRlIiwiZG9jdW1lbnRJZCIsInNldERvY3VtZW50SWQiLCJkb3dubG9hZFVybCIsInNldERvd25sb2FkVXJsIiwiZGlzYWJsZWQiLCJzZXREaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsImNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsInJlZnJlc2giLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0Q29udGV4dFJvb3QiLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZCIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJpc051bGwiLCJnZXRDaGlsZHJlbiIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsInN0eWxlIiwibWVyZ2VTdHlsZXMiLCJjbGFzc05hbWUiLCJib3JkZXJSYWRpdXMiLCJ1cmwiLCJjb250cm9scyIsIndpZHRoIiwiaGVpZ2h0Iiwib25QbGF5Iiwib25QYXVzZSIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tZWRpYS9WaWRlb1BsYXllci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgJy4vVmlkZW9QbGF5ZXIuY3NzJztcbmltcG9ydCBSZWFjdFBsYXllciBmcm9tICdyZWFjdC1wbGF5ZXInO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tIFwiLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZVwiO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBWaWRlb1BsYXllciA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuXG4gICAgY29uc3QgW3BsYXlpbmcsIHNldFBsYXlpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtkb2N1bWVudElkLCBzZXREb2N1bWVudElkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZG93bmxvYWRVcmwsIHNldERvd25sb2FkVXJsXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtkaXNhYmxlZCwgc2V0RGlzYWJsZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuXG4gICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTeXN0ZW1TdWJzY3JpcHRpb25zKHByb3BzLnZpZXdJZCwgcGFyc2VkQ29uZmlnKTtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaS5yZWZyZXNoKCk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaS5yZWZyZXNoKCk7XG4gICAgfSwgW2RvY3VtZW50SWRdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgfSwgW3BsYXlpbmddKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChkb2N1bWVudElkKSB7XG4gICAgICAgICAgICBzZXREb3dubG9hZFVybChsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgJy9kb2NzL2FwaS92MS9tYW5hZ2VyL2Rvd25sb2FkLycgKyBkb2N1bWVudElkICtcbiAgICAgICAgICAgICAgICAnP2FjY2Vzc190b2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKSArICcmaWRUb2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldERvd25sb2FkVXJsKG51bGwpO1xuICAgICAgICB9XG4gICAgfSwgW2RvY3VtZW50SWRdKTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBwbGF5aW5nKHBsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICBzZXRQbGF5aW5nKHBsYXlpbmcpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBkb2N1bWVudElkKGRvY3VtZW50SWQpIHtcbiAgICAgICAgICAgICAgICBzZXREb2N1bWVudElkKGRvY3VtZW50SWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBkb2N1bWVudElkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudElkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHNldERpc2FibGVkKGRpc2FibGVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmlzaWJsZSh2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe30sIHByb3BzLmNvbmZpZyl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZFVybCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwbGF5ZXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWFjdFBsYXllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JvcmRlclJhZGl1czogJzRweCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9e2Rvd25sb2FkVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZWFjdC1wbGF5ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5aW5nPXtwbGF5aW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QbGF5PXsoKSA9PiBzZXRQbGF5aW5nKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhdXNlPXsoKSA9PiBzZXRQbGF5aW5nKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgKCFkb2N1bWVudElkIHx8ICFkb3dubG9hZFVybCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PIFRSQUlOSU5HIFZJREVPIEFWQUlMQUJMRVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC8+XG4gICAgKTtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgVmlkZW9QbGF5ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksbUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUFrRCxTQUFBRSx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFQLHdCQUFBTyxDQUFBLEVBQUFHLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBWCx1QkFBQSxZQUFBQSxDQUFBTyxDQUFBLEVBQUFHLENBQUEsU0FBQUEsQ0FBQSxJQUFBSCxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFPLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQVIsT0FBQSxFQUFBRixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNB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
174
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0UGxheWVyIiwiX0NpcmN1bGFyUHJvZ3Jlc3MiLCJfT2JzZXJ2YWJsZSIsIl9kb2N1bWVudERvd25sb2FkIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVmlkZW9QbGF5ZXIiLCJSZWFjdCIsIm1lbW8iLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJyZWYiLCJwbGF5aW5nIiwic2V0UGxheWluZyIsInVzZVN0YXRlIiwiZG9jdW1lbnRJZCIsInNldERvY3VtZW50SWQiLCJkb3dubG9hZFVybCIsInNldERvd25sb2FkVXJsIiwibG9hZGluZyIsInNldExvYWRpbmciLCJkaXNhYmxlZCIsInNldERpc2FibGVkIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJ1c2VFZmZlY3QiLCJoYW5kbGUiLCJhcGkiLCJwYXJzZWRDb25maWciLCJVdGlscyIsInBhcnNlQ29uZmlnIiwiY29uZmlnIiwidmlld0lkIiwiZXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsImV2ZW50SGFuZGxpbmdDb25maWciLCJhZGRTeXN0ZW1TdWJzY3JpcHRpb25zIiwicmVmcmVzaCIsImNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMiLCJhY3RpdmUiLCJjcmVhdGVkIiwiZmV0Y2hEb2N1bWVudE9iamVjdFVybCIsInRoZW4iLCJvYmplY3RVcmwiLCJVUkwiLCJyZXZva2VPYmplY3RVUkwiLCJjYXRjaCIsImZpbmFsbHkiLCJpZCIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJpc051bGwiLCJnZXRDaGlsZHJlbiIsImFsbG93RG93bmxvYWQiLCJnZXRDb21wb25lbnRBdHRyaWJ1dGUiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJzdHlsZSIsIm1lcmdlU3R5bGVzIiwiY2xhc3NOYW1lIiwiYm9yZGVyUmFkaXVzIiwidXJsIiwiY29udHJvbHMiLCJ3aWR0aCIsImhlaWdodCIsImZpbGUiLCJhdHRyaWJ1dGVzIiwiY29udHJvbHNMaXN0IiwidW5kZWZpbmVkIiwiZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUiLCJvbkNvbnRleHRNZW51IiwicHJldmVudERlZmF1bHQiLCJvblBsYXkiLCJvblBhdXNlIiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsInNpemUiLCJtYXJnaW5Ub3AiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvVmlkZW9QbGF5ZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0ICcuL1ZpZGVvUGxheWVyLmNzcyc7XG5pbXBvcnQgUmVhY3RQbGF5ZXIgZnJvbSAncmVhY3QtcGxheWVyJztcbmltcG9ydCBDaXJjdWxhclByb2dyZXNzIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQ2lyY3VsYXJQcm9ncmVzcyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gXCIuLi8uLi9ldmVudC9PYnNlcnZhYmxlXCI7XG5pbXBvcnQge2ZldGNoRG9jdW1lbnRPYmplY3RVcmx9IGZyb20gJy4uLy4uL2RvY3VtZW50RG93bmxvYWQnO1xuXG5jb25zdCBWaWRlb1BsYXllciA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuXG4gICAgY29uc3QgW3BsYXlpbmcsIHNldFBsYXlpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtkb2N1bWVudElkLCBzZXREb2N1bWVudElkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZG93bmxvYWRVcmwsIHNldERvd25sb2FkVXJsXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtkaXNhYmxlZCwgc2V0RGlzYWJsZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuXG4gICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTeXN0ZW1TdWJzY3JpcHRpb25zKHByb3BzLnZpZXdJZCwgcGFyc2VkQ29uZmlnKTtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaS5yZWZyZXNoKCk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaS5yZWZyZXNoKCk7XG4gICAgfSwgW2RvY3VtZW50SWRdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgfSwgW3BsYXlpbmddKTtcblxuICAgIC8vIEZldGNoIHRoZSB2aWRlbyB3aXRoIGhlYWRlciBhdXRoIChBdXRob3JpemF0aW9uICsgaWRUb2tlbiArIHRlbmFudCkgYXMgYSBibG9iIG9iamVjdCBVUkwuIEFcbiAgICAvLyBwbGFpbiA8dmlkZW8+IHNyYyAod2hhdCBSZWFjdFBsYXllciBzZXRzKSBjYW4ndCBzZW5kIHRoZSB0ZW5hbnQgaGVhZGVyLCBzbyB0aGUgZG9jcyBzZXJ2aWNlXG4gICAgLy8gd291bGQgcmVzb2x2ZSB0aGUgd3JvbmcgUzMgYnVja2V0IGFuZCB0aGUgdmlkZW8gd291bGQgZmFpbCB0byBsb2FkLlxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIEluaXRpYWwgYGZhbHNlYCBzZW50aW5lbDogdGhlIHBhcmVudCBoYXNuJ3QgcmVzb2x2ZWQgdGhlIHRyYWluaW5nIGRhdGEgeWV0LCBzbyBrZWVwIHRoZVxuICAgICAgICAvLyBzcGlubmVyIChsb2FkaW5nIHN0YXJ0cyB0cnVlKSByYXRoZXIgdGhhbiBmbGFzaGluZyBcIm5vIHZpZGVvXCIuXG4gICAgICAgIGlmIChkb2N1bWVudElkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZG9jdW1lbnRJZCkge1xuICAgICAgICAgICAgLy8gUGFyZW50IHJlc29sdmVkIGRvY3VtZW50SWQgdG8gZW1wdHkgKHVuZGVmaW5lZC9udWxsKSDigJQgZ2VudWluZWx5IG5vIHZpZGVvLlxuICAgICAgICAgICAgc2V0RG93bmxvYWRVcmwobnVsbCk7XG4gICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgbGV0IGNyZWF0ZWQgPSBudWxsO1xuICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICBzZXREb3dubG9hZFVybChudWxsKTtcbiAgICAgICAgZmV0Y2hEb2N1bWVudE9iamVjdFVybChkb2N1bWVudElkKVxuICAgICAgICAgICAgLnRoZW4oKG9iamVjdFVybCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCA9IG9iamVjdFVybDtcbiAgICAgICAgICAgICAgICAgICAgc2V0RG93bmxvYWRVcmwob2JqZWN0VXJsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoY3JlYXRlZCkge1xuICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoY3JlYXRlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW2RvY3VtZW50SWRdKTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBwbGF5aW5nKHBsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICBzZXRQbGF5aW5nKHBsYXlpbmcpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBkb2N1bWVudElkKGRvY3VtZW50SWQpIHtcbiAgICAgICAgICAgICAgICBzZXREb2N1bWVudElkKGRvY3VtZW50SWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBkb2N1bWVudElkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudElkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHNldERpc2FibGVkKGRpc2FibGVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmlzaWJsZSh2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8gQ0RVSS1jb25maWd1cmFibGU6IGhpZGUgdGhlIG5hdGl2ZSBkb3dubG9hZCBjb250cm9sIGFuZCBibG9jayB0aGUgcmlnaHQtY2xpY2sgXCJzYXZlIHZpZGVvXCJcbiAgICAvLyBtZW51IHVubGVzcyB0aGUgdmlldyBleHBsaWNpdGx5IG9wdHMgaW4gdmlhIGF0dHJpYnV0ZXMuYWxsb3dEb3dubG9hZCA9IHRydWUuIERlZmF1bHQ6IGZhbHNlXG4gICAgLy8gKGRvd25sb2FkIGRpc2FibGVkKS5cbiAgICBjb25zdCBhbGxvd0Rvd25sb2FkID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ2FsbG93RG93bmxvYWQnLCBmYWxzZSkgPT09IHRydWU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiZcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtVdGlscy5tZXJnZVN0eWxlcyh7fSwgcHJvcHMuY29uZmlnKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkVXJsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBsYXllci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlYWN0UGxheWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Ym9yZGVyUmFkaXVzOiAnNHB4J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17ZG93bmxvYWRVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlYWN0LXBsYXllclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlpbmc9e3BsYXlpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzTGlzdDogYWxsb3dEb3dubG9hZCA/IHVuZGVmaW5lZCA6ICdub2Rvd25sb2FkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmU6ICFhbGxvd0Rvd25sb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRleHRNZW51OiBhbGxvd0Rvd25sb2FkID8gdW5kZWZpbmVkIDogKGUpID0+IGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QbGF5PXsoKSA9PiBzZXRQbGF5aW5nKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhdXNlPXsoKSA9PiBzZXRQbGF5aW5nKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZyAmJiAhZG93bmxvYWRVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaXJjdWxhclByb2dyZXNzIHNpemU9ezQwfSBzdHlsZT17e2NvbG9yOiAnd2hpdGUnfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXJnaW5Ub3A6ICcxMnB4J319PkxvYWRpbmcgdmlkZW/igKY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICFkb3dubG9hZFVybCAmJiAhbG9hZGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnYmxhY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTk8gVFJBSU5JTkcgVklERU8gQVZBSUxBQkxFXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8Lz5cbiAgICApO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBWaWRlb1BsYXllcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0saUJBQUEsR0FBQU4sT0FBQTtBQUE4RCxTQUFBRSx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFSLHdCQUFBUSxDQUFBLEVBQUFHLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBWix1QkFBQSxZQUFBQSxDQUFBUSxDQUFBLEVBQUFHLENBQUEsU0FBQUEsQ0FBQSxJQUFBSCxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFPLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQVIsT0FBQSxFQUFBRixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFTLENBQUEsTUFBQUYsQ0FBQSxHQUFBSixDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRSxDQUFBLENBQUFJLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTyxDQUFBLENBQUFLLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTyxDQUFBLENBQUFNLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUyxDQUFBLGdCQUFBTixDQUFBLElBQUFILENBQUEsZ0JBQUFHLENBQUEsT0FBQVcsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsRUFBQUcsQ0FBQSxPQUFBSyxDQUFBLElBQUFELENBQUEsR0FBQVMsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsQ0FBQSxPQUFBSyxDQUFBLENBQUFJLEdBQUEsSUFBQUosQ0FBQSxDQUFBSyxHQUFBLElBQUFOLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTixDQUFBLEVBQUFLLENBQUEsSUFBQUMsQ0FBQSxDQUFBTixDQUFBLElBQUFILENBQUEsQ0FBQUcsQ0FBQSxXQUFBTSxDQUFBLEtBQUFULENBQUEsRUFBQUcsQ0FBQTtBQUU5RCxNQUFNZ0IsV0FBVyxnQkFBR0MsY0FBSyxDQUFDQyxJQUFJLGNBQUNELGNBQUssQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLEtBQUssRUFBRUMsR0FBRyxLQUFLO0VBRTVELE1BQU0sQ0FBQ0MsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBRyxJQUFBQyxlQUFRLEVBQUMsS0FBSyxDQUFDO0VBQzdDLE1BQU0sQ0FBQ0MsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRyxJQUFBRixlQUFRLEVBQUMsS0FBSyxDQUFDO0VBQ25ELE1BQU0sQ0FBQ0csV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBRyxJQUFBSixlQUFRLEVBQUMsSUFBSSxDQUFDO0VBQ3BELE1BQU0sQ0FBQ0ssT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBRyxJQUFBTixlQUFRLEVBQUMsSUFBSSxDQUFDO0VBQzVDLE1BQU0sQ0FBQ08sUUFBUSxFQUFFQyxXQUFXLENBQUMsR0FBR2YsY0FBSyxDQUFDTyxRQUFRLENBQUMsS0FBSyxDQUFDO0VBQ3JELE1BQU0sQ0FBQ1MsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBR2pCLGNBQUssQ0FBQ08sUUFBUSxDQUFDLElBQUksQ0FBQztFQUVsRFAsY0FBSyxDQUFDa0IsU0FBUyxDQUFDLE1BQU07SUFDbEJmLEtBQUssQ0FBQ2dCLE1BQU0sQ0FBQ0MsR0FBRyxHQUFHQSxHQUFHLENBQUMsQ0FBQztFQUM1QixDQUFDLENBQUM7RUFFRnBCLGNBQUssQ0FBQ2tCLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCZixLQUFLLENBQUNnQixNQUFNLENBQUNDLEdBQUcsR0FBR0EsR0FBRyxDQUFDLENBQUM7SUFFeEIsSUFBSUMsWUFBWSxHQUFHQyxjQUFLLENBQUNDLFdBQVcsQ0FBQ3BCLEtBQUssQ0FBQ3FCLE1BQU0sRUFBRXJCLEtBQUssQ0FBQ3NCLE1BQU0sQ0FBQztJQUNoRUMsbUJBQVksQ0FBQ0MsZ0JBQWdCLENBQUNOLFlBQVksQ0FBQ08sbUJBQW1CLEVBQUV6QixLQUFLLENBQUNnQixNQUFNLEVBQUVoQixLQUFLLENBQUNzQixNQUFNLENBQUM7SUFDM0ZDLG1CQUFZLENBQUNHLHNCQUFzQixDQUFDMUIsS0FBSyxDQUFDc0IsTUFBTSxFQUFFSixZQUFZLENBQUM7SUFDL0RsQixLQUFLLENBQUNnQixNQUFNLENBQUNDLEdBQUcsQ0FBQ1UsT0FBTyxDQUFDLENBQUM7SUFFMUIsT0FBTyxNQUFNO01BQ1RKLG1CQUFZLENBQUNLLDRCQUE0QixDQUFDNUIsS0FBSyxDQUFDZ0IsTUFBTSxDQUFDO0lBQzNELENBQUM7RUFDTCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU5uQixjQUFLLENBQUNrQixTQUFTLENBQUMsTUFBTTtJQUNsQmYsS0FBSyxDQUFDZ0IsTUFBTSxDQUFDQyxHQUFHLENBQUNVLE9BQU8sQ0FBQyxDQUFDO0VBQzlCLENBQUMsRUFBRSxDQUFDdEIsVUFBVSxDQUFDLENBQUM7RUFFaEJSLGNBQUssQ0FBQ2tCLFNBQVMsQ0FBQyxNQUFNLENBQ3RCLENBQUMsRUFBRSxDQUFDYixPQUFPLENBQUMsQ0FBQzs7RUFFYjtFQUNBO0VBQ0E7RUFDQUwsY0FBSyxDQUFDa0IsU0FBUyxDQUFDLE1BQU07SUFDbEI7SUFDQTtJQUNBLElBQUlWLFVBQVUsS0FBSyxLQUFLLEVBQUU7TUFDdEI7SUFDSjtJQUNBLElBQUksQ0FBQ0EsVUFBVSxFQUFFO01BQ2I7TUFDQUcsY0FBYyxDQUFDLElBQUksQ0FBQztNQUNwQkUsVUFBVSxDQUFDLEtBQUssQ0FBQztNQUNqQjtJQUNKO0lBQ0EsSUFBSW1CLE1BQU0sR0FBRyxJQUFJO0lBQ2pCLElBQUlDLE9BQU8sR0FBRyxJQUFJO0lBQ2xCcEIsVUFBVSxDQUFDLElBQUksQ0FBQztJQUNoQkYsY0FBYyxDQUFDLElBQUksQ0FBQztJQUNwQixJQUFBdUIsd0NBQXNCLEVBQUMxQixVQUFVLENBQUMsQ0FDN0IyQixJQUFJLENBQUVDLFNBQVMsSUFBSztNQUNqQixJQUFJSixNQUFNLEVBQUU7UUFDUkMsT0FBTyxHQUFHRyxTQUFTO1FBQ25CekIsY0FBYyxDQUFDeUIsU0FBUyxDQUFDO01BQzdCLENBQUMsTUFBTTtRQUNIQyxHQUFHLENBQUNDLGVBQWUsQ0FBQ0YsU0FBUyxDQUFDO01BQ2xDO0lBQ0osQ0FBQyxDQUFDLENBQ0RHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ2ZDLE9BQU8sQ0FBQyxNQUFNO01BQ1gsSUFBSVIsTUFBTSxFQUFFO1FBQ1JuQixVQUFVLENBQUMsS0FBSyxDQUFDO01BQ3JCO0lBQ0osQ0FBQyxDQUFDO0lBQ04sT0FBTyxNQUFNO01BQ1RtQixNQUFNLEdBQUcsS0FBSztNQUNkLElBQUlDLE9BQU8sRUFBRTtRQUNUSSxHQUFHLENBQUNDLGVBQWUsQ0FBQ0wsT0FBTyxDQUFDO01BQ2hDO0lBQ0osQ0FBQztFQUNMLENBQUMsRUFBRSxDQUFDekIsVUFBVSxDQUFDLENBQUM7RUFFaEIsTUFBTVksR0FBRyxHQUFHQSxDQUFBLEtBQU07SUFDZCxPQUFPO01BQ0gsSUFBSXFCLEVBQUVBLENBQUEsRUFBRztRQUNMLE9BQU90QyxLQUFLLENBQUNxQixNQUFNLENBQUNpQixFQUFFO01BQzFCLENBQUM7TUFDRCxJQUFJcEMsT0FBT0EsQ0FBQ0EsT0FBTyxFQUFFO1FBQ2pCQyxVQUFVLENBQUNELE9BQU8sQ0FBQztNQUN2QixDQUFDO01BQ0QsSUFBSUcsVUFBVUEsQ0FBQ0EsVUFBVSxFQUFFO1FBQ3ZCQyxhQUFhLENBQUNELFVBQVUsQ0FBQztNQUM3QixDQUFDO01BQ0QsSUFBSUEsVUFBVUEsQ0FBQSxFQUFHO1FBQ2IsT0FBT0EsVUFBVTtNQUNyQixDQUFDO01BQ0QsSUFBSU0sUUFBUUEsQ0FBQ0EsUUFBUSxFQUFFO1FBQ25CQyxXQUFXLENBQUNELFFBQVEsQ0FBQztNQUN6QixDQUFDO01BQ0QsSUFBSUUsT0FBT0EsQ0FBQ0EsT0FBTyxFQUFFO1FBQ2pCQyxVQUFVLENBQUNELE9BQU8sQ0FBQztNQUN2QixDQUFDO01BQ0RjLE9BQU9BLENBQUEsRUFBRztRQUNOLElBQUlULFlBQVksR0FBR0MsY0FBSyxDQUFDQyxXQUFXLENBQUNwQixLQUFLLENBQUNxQixNQUFNLEVBQUVyQixLQUFLLENBQUNzQixNQUFNLENBQUM7UUFDaEVWLFdBQVcsQ0FBQ08sY0FBSyxDQUFDb0IseUJBQXlCLENBQUNyQixZQUFZLENBQUNQLFFBQVEsRUFBRU8sWUFBWSxDQUFDb0IsRUFBRSxDQUFDLENBQUM7UUFDcEZ4QixVQUFVLENBQUNLLGNBQUssQ0FBQ3FCLE1BQU0sQ0FBQ3RCLFlBQVksQ0FBQ0wsT0FBTyxDQUFDLElBQUlNLGNBQUssQ0FBQ29CLHlCQUF5QixDQUFDckIsWUFBWSxDQUFDTCxPQUFPLEVBQUVLLFlBQVksQ0FBQ29CLEVBQUUsQ0FBQyxDQUFDO01BQzVILENBQUM7TUFDREcsV0FBVyxFQUFFQSxDQUFBLEtBQU07UUFDZixPQUFPLEVBQUU7TUFDYjtJQUNKLENBQUM7RUFDTCxDQUFDOztFQUVEO0VBQ0E7RUFDQTtFQUNBLE1BQU1DLGFBQWEsR0FBR3ZCLGNBQUssQ0FBQ3dCLHFCQUFxQixDQUFDM0MsS0FBSyxDQUFDcUIsTUFBTSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJO0VBRWhHLG9CQUNJckQsTUFBQSxDQUFBVyxPQUFBLENBQUFpRSxhQUFBLENBQUE1RSxNQUFBLENBQUFXLE9BQUEsQ0FBQWtFLFFBQUEsUUFFUWhDLE9BQU8saUJBQ1A3QyxNQUFBLENBQUFXLE9BQUEsQ0FBQWlFLGFBQUE7SUFDSUUsS0FBSyxFQUFFM0IsY0FBSyxDQUFDNEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFL0MsS0FBSyxDQUFDcUIsTUFBTTtFQUFFLEdBR3ZDZCxXQUFXLGlCQUNYdkMsTUFBQSxDQUFBVyxPQUFBLENBQUFpRSxhQUFBO0lBQUtJLFNBQVMsRUFBQztFQUFnQixnQkFDM0JoRixNQUFBLENBQUFXLE9BQUEsQ0FBQWlFLGFBQUEsQ0FBQ3ZFLFlBQUEsQ0FBQU0sT0FBVztJQUNSbUUsS0FBSyxFQUFFO01BQUNHLFlBQVksRUFBRTtJQUFLLENBQUU7SUFDN0JDLEdBQUcsRUFBRTNDLFdBQVk7SUFDakJ5QyxTQUFTLEVBQUMsY0FBYztJQUN4QjlDLE9BQU8sRUFBRUEsT0FBUTtJQUNqQmlELFFBQVE7SUFDUkMsS0FBSyxFQUFDLE1BQU07SUFDWkMsTUFBTSxFQUFDLE1BQU07SUFDYmhDLE1BQU0sRUFBRTtNQUNKaUMsSUFBSSxFQUFFO1FBQ0ZDLFVBQVUsRUFBRTtVQUNSQyxZQUFZLEVBQUVkLGFBQWEsR0FBR2UsU0FBUyxHQUFHLFlBQVk7VUFDdERDLHVCQUF1QixFQUFFLENBQUNoQixhQUFhO1VBQ3ZDaUIsYUFBYSxFQUFFakIsYUFBYSxHQUFHZSxTQUFTLEdBQUloRixDQUFDLElBQUtBLENBQUMsQ0FBQ21GLGNBQWMsQ0FBQztRQUN2RTtNQUNKO0lBQ0osQ0FBRTtJQUNGQyxNQUFNLEVBQUVBLENBQUEsS0FBTTFELFVBQVUsQ0FBQyxJQUFJLENBQUU7SUFDL0IyRCxPQUFPLEVBQUVBLENBQUEsS0FBTTNELFVBQVUsQ0FBQyxLQUFLO0VBQUUsQ0FDcEMsQ0FDQSxDQUFDLEVBR05NLE9BQU8sSUFBSSxDQUFDRixXQUFXLGlCQUN2QnZDLE1BQUEsQ0FBQVcsT0FBQSxDQUFBaUUsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFDUk0sS0FBSyxFQUFFLE1BQU07TUFDYkMsTUFBTSxFQUFFLE1BQU07TUFDZFUsZUFBZSxFQUFFLE9BQU87TUFDeEJDLEtBQUssRUFBRSxPQUFPO01BQ2RDLE9BQU8sRUFBRSxNQUFNO01BQ2ZDLGFBQWEsRUFBRSxRQUFRO01BQ3ZCQyxjQUFjLEVBQUUsUUFBUTtNQUN4QkMsVUFBVSxFQUFFLFFBQVE7TUFDcEJuQixZQUFZLEVBQUU7SUFDbEI7RUFBRSxnQkFDRWpGLE1BQUEsQ0FBQVcsT0FBQSxDQUFBaUUsYUFBQSxDQUFDdEUsaUJBQUEsQ0FBQUssT0FBZ0I7SUFBQzBGLElBQUksRUFBRSxFQUFHO0lBQUN2QixLQUFLLEVBQUU7TUFBQ2tCLEtBQUssRUFBRTtJQUFPO0VBQUUsQ0FBQyxDQUFDLGVBQ3REaEcsTUFBQSxDQUFBVyxPQUFBLENBQUFpRSxhQUFBO0lBQUtFLEtBQUssRUFBRTtNQUFDd0IsU0FBUyxFQUFFO0lBQU07RUFBRSxHQUFDLHFCQUFtQixDQUNuRCxDQUFDLEVBR04sQ0FBQy9ELFdBQVcsSUFBSSxDQUFDRSxPQUFPLGlCQUN4QnpDLE1BQUEsQ0FBQVcsT0FBQSxDQUFBaUUsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFDUk0sS0FBSyxFQUFFLE1BQU07TUFDYkMsTUFBTSxFQUFFLE1BQU07TUFDZFUsZUFBZSxFQUFFLE9BQU87TUFDeEJDLEtBQUssRUFBRSxPQUFPO01BQ2RDLE9BQU8sRUFBRSxNQUFNO01BQ2ZFLGNBQWMsRUFBRSxRQUFRO01BQ3hCQyxVQUFVLEVBQUUsUUFBUTtNQUNwQm5CLFlBQVksRUFBRTtJQUNsQjtFQUFFLEdBQUMsNkJBRUUsQ0FFUixDQUVYLENBQUM7QUFFWCxDQUFDLENBQUMsQ0FBQztBQUFDLElBQUFzQixRQUFBLEdBQUFDLE9BQUEsQ0FBQTdGLE9BQUEsR0FFV2lCLFdBQVciLCJpZ25vcmVMaXN0IjpbXX0=