@commercetools-frontend/application-shell 27.10.0 → 27.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/{index-245e2980.cjs.prod.js → application-entry-point-516fd72c.cjs.prod.js} +70 -4
  2. package/dist/{index-86039df7.esm.js → application-entry-point-e20cafdb.esm.js} +81 -7
  3. package/dist/{index-614accc4.cjs.dev.js → application-entry-point-e5623556.cjs.dev.js} +80 -4
  4. package/dist/commercetools-frontend-application-shell.cjs.dev.js +15 -13
  5. package/dist/commercetools-frontend-application-shell.cjs.prod.js +15 -13
  6. package/dist/commercetools-frontend-application-shell.esm.js +12 -11
  7. package/dist/{custom-view-dev-host-8925c254.esm.js → custom-view-dev-host-0c1284af.esm.js} +6 -5
  8. package/dist/{custom-view-dev-host-c5cae7af.cjs.prod.js → custom-view-dev-host-e7afc6ce.cjs.prod.js} +6 -5
  9. package/dist/{custom-view-dev-host-16c18b8b.cjs.dev.js → custom-view-dev-host-fd473995.cjs.dev.js} +6 -5
  10. package/dist/declarations/src/index.d.ts +1 -0
  11. package/dist/declarations/src/types/generated/mc.d.ts +121 -0
  12. package/dist/declarations/src/utils/select-project-key-in-context/index.d.ts +1 -0
  13. package/dist/declarations/src/utils/select-project-key-in-context/select-project-key-in-context.d.ts +6 -0
  14. package/dist/declarations-connectors/src/components/application-context/application-context.d.ts +4 -0
  15. package/dist/declarations-connectors/src/types/generated/mc.d.ts +121 -0
  16. package/dist/{index-ce507805.cjs.prod.js → index-2ead4c51.cjs.prod.js} +139 -77
  17. package/dist/index-33df00ac.esm.js +2075 -0
  18. package/dist/index-582e2c31.cjs.dev.js +2137 -0
  19. package/dist/{navbar-59504b51.cjs.dev.js → navbar-1c7bea3d.cjs.dev.js} +56 -10
  20. package/dist/{navbar-9eb6c972.esm.js → navbar-f1a15d6d.esm.js} +57 -11
  21. package/dist/{navbar-f4b2552d.cjs.prod.js → navbar-f6d839cd.cjs.prod.js} +53 -10
  22. package/dist/{oidc-callback-1836d6f9.esm.js → oidc-callback-293b318e.esm.js} +7 -6
  23. package/dist/{oidc-callback-5b213b4f.cjs.prod.js → oidc-callback-55b9cdae.cjs.prod.js} +7 -6
  24. package/dist/{oidc-callback-ec951044.cjs.dev.js → oidc-callback-d2bde9ed.cjs.dev.js} +7 -6
  25. package/dist/{project-container-7f13b722.esm.js → project-container-1a5109fc.esm.js} +12 -13
  26. package/dist/{project-container-bd7b1263.cjs.dev.js → project-container-cf9513f2.cjs.dev.js} +12 -13
  27. package/dist/{project-container-d44394a1.cjs.prod.js → project-container-d10fd8fc.cjs.prod.js} +12 -13
  28. package/dist/{project-expired-fbd3b921.cjs.prod.js → project-expired-04d50538.cjs.prod.js} +8 -7
  29. package/dist/{project-expired-b0f48929.esm.js → project-expired-08c6c246.esm.js} +8 -7
  30. package/dist/{project-expired-200d21fc.cjs.dev.js → project-expired-50bc2113.cjs.dev.js} +8 -7
  31. package/dist/{project-not-found-6a2f3959.cjs.dev.js → project-not-found-6153dba4.cjs.dev.js} +8 -7
  32. package/dist/{project-not-found-2c4da477.cjs.prod.js → project-not-found-78dfadaa.cjs.prod.js} +8 -7
  33. package/dist/{project-not-found-2b48a462.esm.js → project-not-found-ee111ef0.esm.js} +8 -7
  34. package/dist/{project-not-initialized-d1532d05.cjs.prod.js → project-not-initialized-0e64926e.cjs.prod.js} +8 -7
  35. package/dist/{project-not-initialized-8324ddc0.esm.js → project-not-initialized-3e57d2cd.esm.js} +8 -7
  36. package/dist/{project-not-initialized-a4cdccae.cjs.dev.js → project-not-initialized-9d9df6a9.cjs.dev.js} +8 -7
  37. package/dist/{project-suspended-42ac696c.cjs.dev.js → project-suspended-12605956.cjs.dev.js} +8 -7
  38. package/dist/{project-suspended-ab7faf16.esm.js → project-suspended-a9d0c371.esm.js} +8 -7
  39. package/dist/{project-suspended-0450891d.cjs.prod.js → project-suspended-ede2efc6.cjs.prod.js} +8 -7
  40. package/dist/{redirect-to-login-6675c038.cjs.prod.js → redirect-to-login-18f6e1b8.cjs.prod.js} +1 -1
  41. package/dist/{redirect-to-login-8a61864c.cjs.dev.js → redirect-to-login-4dbf1c4e.cjs.dev.js} +1 -1
  42. package/dist/{redirect-to-login-b79d0910.esm.js → redirect-to-login-79be7369.esm.js} +2 -2
  43. package/dist/{redirect-to-logout-4de14b5d.esm.js → redirect-to-logout-d1b8a6bc.esm.js} +9 -8
  44. package/dist/{redirect-to-logout-71e8db26.cjs.prod.js → redirect-to-logout-da9da19a.cjs.prod.js} +8 -7
  45. package/dist/{redirect-to-logout-37258f53.cjs.dev.js → redirect-to-logout-f6457890.cjs.dev.js} +8 -7
  46. package/dist/{redirect-to-project-create-9249e554.esm.js → redirect-to-project-create-3a88851c.esm.js} +2 -1
  47. package/dist/{redirect-to-project-create-e4ff7797.cjs.prod.js → redirect-to-project-create-603634dd.cjs.prod.js} +2 -1
  48. package/dist/{redirect-to-project-create-f4f01842.cjs.dev.js → redirect-to-project-create-611ee583.cjs.dev.js} +2 -1
  49. package/dist/{requests-in-flight-loader-b33d695b.cjs.prod.js → requests-in-flight-loader-16c2fd17.cjs.prod.js} +8 -7
  50. package/dist/{requests-in-flight-loader-dd13291f.esm.js → requests-in-flight-loader-e59c5d2d.esm.js} +8 -7
  51. package/dist/{requests-in-flight-loader-60a2553f.cjs.dev.js → requests-in-flight-loader-ecfc1ba5.cjs.dev.js} +8 -7
  52. package/dist/{service-page-project-switcher-db1d0801.esm.js → service-page-project-switcher-10bbd35c.esm.js} +1 -1
  53. package/dist/{service-page-project-switcher-974235d0.cjs.dev.js → service-page-project-switcher-1339a2a5.cjs.dev.js} +1 -1
  54. package/dist/{service-page-project-switcher-70a8155d.cjs.prod.js → service-page-project-switcher-8b3a8c3d.cjs.prod.js} +1 -1
  55. package/dist/{use-applications-menu-8984efa1.cjs.prod.js → use-applications-menu-81fff376.cjs.dev.js} +4 -1
  56. package/dist/{use-applications-menu-bc2b9a66.esm.js → use-applications-menu-85ab6542.esm.js} +4 -1
  57. package/dist/{use-applications-menu-bd718ac8.cjs.dev.js → use-applications-menu-dab068b3.cjs.prod.js} +4 -1
  58. package/dist/{user-settings-menu-2235add2.cjs.prod.js → user-settings-menu-361180d0.cjs.prod.js} +3 -3
  59. package/dist/user-settings-menu-498c4581.esm.js +320 -0
  60. package/dist/user-settings-menu-79f09480.cjs.dev.js +345 -0
  61. package/package.json +17 -17
  62. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +6 -6
  63. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +6 -6
  64. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +4 -4
  65. package/dist/application-entry-point-10a5e1a5.esm.js +0 -82
  66. package/dist/application-entry-point-8c4b8e53.cjs.prod.js +0 -86
  67. package/dist/application-entry-point-c87294b0.cjs.dev.js +0 -96
  68. package/dist/index-ac7ed4f7.esm.js +0 -2014
  69. package/dist/index-c7140b1c.cjs.dev.js +0 -2075
  70. package/dist/user-settings-menu-a1d0ba8e.esm.js +0 -320
  71. package/dist/user-settings-menu-b8359b8b.cjs.dev.js +0 -345
@@ -1,2075 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
- var reactRouterDom = require('react-router-dom');
5
- var index = require('./index-614accc4.cjs.dev.js');
6
- var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
7
- var _styled = require('@emotion/styled/base');
8
- var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
9
- var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
10
- var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
11
- var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
12
- var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
13
- var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
14
- var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
15
- var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
16
- var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
17
- var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
18
- var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
19
- var react$1 = require('@emotion/react');
20
- var applicationComponents = require('@commercetools-frontend/application-components');
21
- var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
22
- var constants = require('@commercetools-frontend/constants');
23
- var i18n = require('@commercetools-frontend/i18n');
24
- var reactNotifications = require('@commercetools-frontend/react-notifications');
25
- var sentry = require('@commercetools-frontend/sentry');
26
- var oidc = require('./oidc-b9e7297c.cjs.dev.js');
27
- require('@babel/runtime-corejs3/core-js-stable/url');
28
- var _Set = require('@babel/runtime-corejs3/core-js-stable/set');
29
- var designSystem = require('@commercetools-uikit/design-system');
30
- var Spacings = require('@commercetools-uikit/spacings');
31
- var reactIntl = require('react-intl');
32
- var FlatButton = require('@commercetools-uikit/flat-button');
33
- var icons = require('@commercetools-uikit/icons');
34
- var location = require('./location-c835b8df.cjs.dev.js');
35
- var jsxRuntime = require('@emotion/react/jsx-runtime');
36
- var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
37
- var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
38
- var memoize = require('memoize-one');
39
- var reactSelect = require('react-select');
40
- var AccessibleHidden = require('@commercetools-uikit/accessible-hidden');
41
- var SelectInput = require('@commercetools-uikit/select-input');
42
- var Text = require('@commercetools-uikit/text');
43
- var CTLogoSVG = require('@commercetools-frontend/assets/images/ct-logo.svg');
44
- var LoadingSpinner = require('@commercetools-uikit/loading-spinner');
45
- var history = require('@commercetools-frontend/browser-history');
46
- var l10n = require('@commercetools-frontend/l10n');
47
- require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
48
- var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
49
- var _Object$fromEntries = require('@babel/runtime-corejs3/core-js-stable/object/from-entries');
50
- var _flagsInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/flags');
51
- var react$2 = require('@apollo/client/react');
52
- var combineAdapters = require('@flopflip/combine-adapters');
53
- var httpAdapter = require('@flopflip/http-adapter');
54
- var launchdarklyAdapter = require('@flopflip/launchdarkly-adapter');
55
- var reactBroadcast = require('@flopflip/react-broadcast');
56
- var types = require('@flopflip/types');
57
- var reactRedux = require('react-redux');
58
- var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
59
- var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
60
- var _Reflect$construct = require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
61
- var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
62
- var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
63
- var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
64
- var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
65
- var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
66
- var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
67
- require('@commercetools-uikit/design-system/materials/resets.css');
68
- var ssr = require('@commercetools-frontend/application-config/ssr');
69
- var permissions = require('@commercetools-frontend/permissions');
70
- var memoryAdapter = require('@flopflip/memory-adapter');
71
- var _JSON$stringify = require('@babel/runtime-corejs3/core-js-stable/json/stringify');
72
- var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
73
- var actionsGlobal = require('@commercetools-frontend/actions-global');
74
-
75
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
76
-
77
- var _styled__default = /*#__PURE__*/_interopDefault(_styled);
78
- var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
79
- var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
80
- var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
81
- var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
82
- var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
83
- var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
84
- var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
85
- var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
86
- var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
87
- var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
88
- var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
89
- var _Set__default = /*#__PURE__*/_interopDefault(_Set);
90
- var Spacings__default = /*#__PURE__*/_interopDefault(Spacings);
91
- var FlatButton__default = /*#__PURE__*/_interopDefault(FlatButton);
92
- var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
93
- var memoize__default = /*#__PURE__*/_interopDefault(memoize);
94
- var AccessibleHidden__default = /*#__PURE__*/_interopDefault(AccessibleHidden);
95
- var SelectInput__default = /*#__PURE__*/_interopDefault(SelectInput);
96
- var Text__default = /*#__PURE__*/_interopDefault(Text);
97
- var CTLogoSVG__default = /*#__PURE__*/_interopDefault(CTLogoSVG);
98
- var LoadingSpinner__default = /*#__PURE__*/_interopDefault(LoadingSpinner);
99
- var history__default = /*#__PURE__*/_interopDefault(history);
100
- var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanceProperty);
101
- var _Object$fromEntries__default = /*#__PURE__*/_interopDefault(_Object$fromEntries);
102
- var _flagsInstanceProperty__default = /*#__PURE__*/_interopDefault(_flagsInstanceProperty);
103
- var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
104
- var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
105
- var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
106
- var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
107
- var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
108
-
109
- // NOTE: This string will be replaced on build time with the package version.
110
- var version = "27.10.0";
111
-
112
- const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-60a2553f.cjs.dev.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
113
-
114
- // Attempt to load the `projectKey` from localStorage
115
- function selectProjectKeyFromLocalStorage() {
116
- return window.localStorage.getItem(constants.STORAGE_KEYS.ACTIVE_PROJECT_KEY);
117
- }
118
-
119
- const getPreviousProjectKey = defaultProjectKeyOfUser => {
120
- const previouslyUsedProjectKeyFromLocalStorage = selectProjectKeyFromLocalStorage();
121
- if (previouslyUsedProjectKeyFromLocalStorage) return previouslyUsedProjectKeyFromLocalStorage;
122
- if (defaultProjectKeyOfUser) return defaultProjectKeyOfUser;
123
- return;
124
- };
125
-
126
- const PERFORMANCE_MARKS = {
127
- SKELETON_VISIBLE: 'mc:skeleton-visible',
128
- SHELL_CHROME_MOUNTED: 'mc:shell-chrome-mounted',
129
- INTL_READY: 'mc:intl-ready',
130
- CONTENT_RENDERED: 'mc:content-rendered',
131
- HYDRATION_USER: 'mc:hydration-user',
132
- HYDRATION_PROJECT: 'mc:hydration-project'
133
- };
134
- const alreadyMarked = new _Set__default["default"]();
135
- const markOnce = performanceMark => {
136
- if (alreadyMarked.has(performanceMark)) return;
137
- if (!performance?.mark || !performance.measure) return;
138
- try {
139
- performance.mark(performanceMark);
140
- alreadyMarked.add(performanceMark);
141
- performance.measure(`${performanceMark}:from-nav`, {
142
- start: 0,
143
- end: performanceMark
144
- });
145
- } catch {
146
- // Observational only; never break rendering.
147
- }
148
- };
149
-
150
- var messages$1 = reactIntl.defineMessages({
151
- backToProjectLink: {
152
- id: 'AppBar.backToProjectLink',
153
- defaultMessage: 'Back to project'
154
- }
155
- });
156
-
157
- /**
158
- * Note:
159
- * A full page reload is needed as the user's project may have changed (deletions and/or additions).
160
- * As a result the project and user queries need refetching.
161
- */
162
- const redirectToProject = key => location.location.replace(`/${key}`);
163
- const BackToProject = props => {
164
- const intl = reactIntl.useIntl();
165
- return jsxRuntime.jsx(FlatButton__default["default"], {
166
- onClick: () => redirectToProject(props.projectKey || ''),
167
- icon: jsxRuntime.jsx(icons.AngleLeftIcon, {}),
168
- label: intl.formatMessage(messages$1.backToProjectLink)
169
- });
170
- };
171
- BackToProject.displayName = 'BackToProject';
172
-
173
- const animationPulse = react$1.keyframes`
174
- 0% {
175
- background-color: ${designSystem.customProperties.colorNeutral};
176
- }
177
- 100% {
178
- background-color: ${designSystem.customProperties.colorNeutral95};
179
- }
180
- `;
181
- const getWidthBySize = props => {
182
- switch (props.shape) {
183
- case 'dot':
184
- switch (props.size) {
185
- case 's':
186
- return designSystem.customProperties.spacingS;
187
- case 'm':
188
- return designSystem.customProperties.spacingM;
189
- case 'l':
190
- return designSystem.customProperties.spacingL;
191
- case 'xl':
192
- return designSystem.customProperties.spacingXl;
193
- default:
194
- return 'auto';
195
- }
196
- case 'rect':
197
- switch (props.size) {
198
- case 's':
199
- return '150px';
200
- case 'm':
201
- return '300px';
202
- case 'l':
203
- return '450px';
204
- case 'xl':
205
- return '600px';
206
- default:
207
- return 'auto';
208
- }
209
- default:
210
- return 'auto';
211
- }
212
- };
213
- const getHeightBySize = props => {
214
- switch (props.shape) {
215
- case 'dot':
216
- return getWidthBySize(props);
217
- case 'rect':
218
- return '32px';
219
- default:
220
- return 'auto';
221
- }
222
- };
223
- const getRadiusBySize = props => {
224
- switch (props.shape) {
225
- case 'dot':
226
- switch (props.size) {
227
- case 's':
228
- return designSystem.customProperties.borderRadius4;
229
- case 'm':
230
- return '8px';
231
- case 'l':
232
- return '12px';
233
- case 'xl':
234
- return '16px';
235
- default:
236
- return 'none';
237
- }
238
- case 'rect':
239
- return designSystem.customProperties.borderRadius4;
240
- default:
241
- return 'none';
242
- }
243
- };
244
- const LoadingPlaceholder = /*#__PURE__*/_styled__default["default"]("div", process.env.NODE_ENV === "production" ? {
245
- target: "e4c5pm00"
246
- } : {
247
- target: "e4c5pm00",
248
- label: "LoadingPlaceholder"
249
- })("background-color:", designSystem.customProperties.colorNeutral, ";animation-name:", animationPulse, ";animation-duration:1s;animation-timing-function:ease-out;animation-delay:0;animation-direction:alternate;animation-iteration-count:infinite;width:", getWidthBySize, ";height:", getHeightBySize, ";border-radius:", getRadiusBySize, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvYWRpbmctcGxhY2Vob2xkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtGNEMiLCJmaWxlIjoibG9hZGluZy1wbGFjZWhvbGRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNoYXBlOiAnZG90JyB8ICdyZWN0JztcbiAgc2l6ZTogJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJztcbn07XG5cbmNvbnN0IGFuaW1hdGlvblB1bHNlID0ga2V5ZnJhbWVzYFxuICAwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbH07XG4gIH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDk1fTtcbiAgfVxuYDtcblxuY29uc3QgZ2V0V2lkdGhCeVNpemUgPSAocHJvcHM6IFByb3BzKSA9PiB7XG4gIHN3aXRjaCAocHJvcHMuc2hhcGUpIHtcbiAgICBjYXNlICdkb3QnOlxuICAgICAgc3dpdGNoIChwcm9wcy5zaXplKSB7XG4gICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIHJldHVybiBjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdTO1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICByZXR1cm4gY3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTTtcbiAgICAgICAgY2FzZSAnbCc6XG4gICAgICAgICAgcmV0dXJuIGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ0w7XG4gICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICByZXR1cm4gY3VzdG9tUHJvcGVydGllcy5zcGFjaW5nWGw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdhdXRvJztcbiAgICAgIH1cbiAgICBjYXNlICdyZWN0JzpcbiAgICAgIHN3aXRjaCAocHJvcHMuc2l6ZSkge1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICByZXR1cm4gJzE1MHB4JztcbiAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgcmV0dXJuICczMDBweCc7XG4gICAgICAgIGNhc2UgJ2wnOlxuICAgICAgICAgIHJldHVybiAnNDUwcHgnO1xuICAgICAgICBjYXNlICd4bCc6XG4gICAgICAgICAgcmV0dXJuICc2MDBweCc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdhdXRvJztcbiAgICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdhdXRvJztcbiAgfVxufTtcbmNvbnN0IGdldEhlaWdodEJ5U2l6ZSA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgc3dpdGNoIChwcm9wcy5zaGFwZSkge1xuICAgIGNhc2UgJ2RvdCc6XG4gICAgICByZXR1cm4gZ2V0V2lkdGhCeVNpemUocHJvcHMpO1xuICAgIGNhc2UgJ3JlY3QnOlxuICAgICAgcmV0dXJuICczMnB4JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdhdXRvJztcbiAgfVxufTtcbmNvbnN0IGdldFJhZGl1c0J5U2l6ZSA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgc3dpdGNoIChwcm9wcy5zaGFwZSkge1xuICAgIGNhc2UgJ2RvdCc6XG4gICAgICBzd2l0Y2ggKHByb3BzLnNpemUpIHtcbiAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgcmV0dXJuIGN1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNDtcbiAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgcmV0dXJuICc4cHgnO1xuICAgICAgICBjYXNlICdsJzpcbiAgICAgICAgICByZXR1cm4gJzEycHgnO1xuICAgICAgICBjYXNlICd4bCc6XG4gICAgICAgICAgcmV0dXJuICcxNnB4JztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ25vbmUnO1xuICAgICAgfVxuICAgIGNhc2UgJ3JlY3QnOlxuICAgICAgcmV0dXJuIGN1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdub25lJztcbiAgfVxufTtcblxuY29uc3QgTG9hZGluZ1BsYWNlaG9sZGVyID0gc3R5bGVkLmRpdjxQcm9wcz5gXG4gIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvck5ldXRyYWx9O1xuICBhbmltYXRpb24tbmFtZTogJHthbmltYXRpb25QdWxzZX07XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xuICBhbmltYXRpb24tZGVsYXk6IDA7XG4gIGFuaW1hdGlvbi1kaXJlY3Rpb246IGFsdGVybmF0ZTtcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG5cbiAgd2lkdGg6ICR7Z2V0V2lkdGhCeVNpemV9O1xuICBoZWlnaHQ6ICR7Z2V0SGVpZ2h0QnlTaXplfTtcbiAgYm9yZGVyLXJhZGl1czogJHtnZXRSYWRpdXNCeVNpemV9O1xuYDtcbkxvYWRpbmdQbGFjZWhvbGRlci5kaXNwbGF5TmFtZSA9ICdMb2FkaW5nUGxhY2Vob2xkZXInO1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkaW5nUGxhY2Vob2xkZXI7XG4iXX0= */"));
250
- LoadingPlaceholder.displayName = 'LoadingPlaceholder';
251
-
252
- var messages = reactIntl.defineMessages({
253
- projectsLabel: {
254
- id: 'ProjectSwitcher.projectsLabel',
255
- description: 'The label for project dropdown switcher',
256
- defaultMessage: 'Projects'
257
- },
258
- searchPlaceholder: {
259
- id: 'ProjectSwitcher.searchPlaceholder',
260
- description: 'Projects filter search input placeholder',
261
- defaultMessage: 'Search for a project'
262
- },
263
- noResults: {
264
- id: 'ProjectSwitcher.noResults',
265
- description: 'Projects filter no results text',
266
- defaultMessage: 'Sorry, but there are no projects that match your search.'
267
- },
268
- suspended: {
269
- id: 'ProjectSwitcher.suspended',
270
- description: 'Label for a suspended project',
271
- defaultMessage: 'Suspended'
272
- },
273
- expired: {
274
- id: 'ProjectSwitcher.expired',
275
- description: 'Label for a suspended project',
276
- defaultMessage: 'Expired'
277
- }
278
- });
279
-
280
- const _excluded$3 = ["children"];
281
- function ownKeys$a(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
282
- function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$a(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$a(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
283
- function _EMOTION_STRINGIFIED_CSS_ERROR__$4() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
284
- var ProjectsQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchUserProjects" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", alias: { kind: "Name", value: "user" }, name: { kind: "Name", value: "me" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "projects" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "total" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "results" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "suspension" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "expiry" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "isProductionProject" }, arguments: [], directives: [] }] } }] } }] } }] } }], loc: { start: 0, end: 258, source: { body: "query FetchUserProjects {\n user: me {\n id\n projects {\n total\n results {\n name\n key\n suspension {\n isActive\n }\n expiry {\n isActive\n }\n isProductionProject\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
285
- const PROJECT_SWITCHER_LABEL_ID = 'project-switcher-label';
286
- const ValueContainer = _ref2 => {
287
- let children = _ref2.children,
288
- restProps = _objectWithoutProperties(_ref2, _excluded$3);
289
- return jsxRuntime.jsx(Text__default["default"].Body, {
290
- fontWeight: "medium",
291
- as: "span",
292
- children: jsxRuntime.jsx(SelectInput__default["default"].ValueContainer, _objectSpread$a(_objectSpread$a({}, restProps), {}, {
293
- children: children
294
- }))
295
- });
296
- };
297
- const ProjectStampsList = props => jsxRuntime.jsxs(Spacings__default["default"].Stack, {
298
- scale: "xs",
299
- alignItems: "flex-end",
300
- children: [props.isProductionProject && jsxRuntime.jsx(applicationComponents.ProjectStamp.IsProduction, {}), props.suspension && props.suspension.isActive && jsxRuntime.jsx(applicationComponents.ProjectStamp.IsSuspended, {}), props.expiry && props.expiry.isActive && jsxRuntime.jsx(applicationComponents.ProjectStamp.IsExpired, {}), props.expiry && Boolean(props.expiry.daysLeft) && jsxRuntime.jsx(applicationComponents.ProjectStamp.WillExpire, {
301
- daysLeft: props.expiry.daysLeft
302
- })]
303
- });
304
- var _ref$3 = process.env.NODE_ENV === "production" ? {
305
- name: "uyj17t",
306
- styles: "flex:1;word-wrap:break-word"
307
- } : {
308
- name: "1wvu9ea-ProjectSwitcherOption",
309
- styles: "flex:1;word-wrap:break-word;label:ProjectSwitcherOption;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3Qtc3dpdGNoZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlGa0IiLCJmaWxlIjoicHJvamVjdC1zd2l0Y2hlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgdHlwZSB7XG4gIE9wdGlvblByb3BzLFxuICBWYWx1ZUNvbnRhaW5lclByb3BzLFxuICBNZW51TGlzdFByb3BzLFxuICBDb250cm9sUHJvcHMsXG59IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyBjb21wb25lbnRzIH0gZnJvbSAncmVhY3Qtc2VsZWN0JztcbmltcG9ydCB7IFByb2plY3RTdGFtcCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgdXNlTWNRdWVyeSxcbiAgb2lkY1N0b3JhZ2UsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHR5cGUgeyBBcHBsaWNhdGlvbldpbmRvdyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBHUkFQSFFMX1RBUkdFVFMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IEFjY2Vzc2libGVIaWRkZW4gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvYWNjZXNzaWJsZS1oaWRkZW4nO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgU2VsZWN0SW5wdXQsIHsgVE9wdGlvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NlbGVjdC1pbnB1dCc7XG5pbXBvcnQgU3BhY2luZ3MgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc3BhY2luZ3MnO1xuaW1wb3J0IFRleHQgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdGV4dCc7XG5pbXBvcnQgdHlwZSB7XG4gIFRQcm9qZWN0LFxuICBURmV0Y2hVc2VyUHJvamVjdHNRdWVyeSxcbiAgVEZldGNoVXNlclByb2plY3RzUXVlcnlWYXJpYWJsZXMsXG59IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBsb2NhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2xvY2F0aW9uJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuL21lc3NhZ2VzJztcbmltcG9ydCBQcm9qZWN0c1F1ZXJ5IGZyb20gJy4vcHJvamVjdC1zd2l0Y2hlci5tYy5ncmFwaHFsJztcblxuZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcblxudHlwZSBQcm9wcyA9IHtcbiAgcHJvamVjdEtleT86IHN0cmluZztcbn07XG50eXBlIE9wdGlvblR5cGUgPSBQaWNrPFxuICBUUHJvamVjdCxcbiAgJ2tleScgfCAnbmFtZScgfCAnc3VzcGVuc2lvbicgfCAnZXhwaXJ5JyB8ICdpc1Byb2R1Y3Rpb25Qcm9qZWN0J1xuPiAmXG4gIFRPcHRpb247XG5cbmNvbnN0IFBST0pFQ1RfU1dJVENIRVJfTEFCRUxfSUQgPSAncHJvamVjdC1zd2l0Y2hlci1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBWYWx1ZUNvbnRhaW5lciA9ICh7XG4gIGNoaWxkcmVuLFxuICAuLi5yZXN0UHJvcHNcbn06IFZhbHVlQ29udGFpbmVyUHJvcHM8VE9wdGlvbj4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8VGV4dC5Cb2R5IGZvbnRXZWlnaHQ9XCJtZWRpdW1cIiBhcz1cInNwYW5cIj5cbiAgICAgIDxTZWxlY3RJbnB1dC5WYWx1ZUNvbnRhaW5lciB7Li4ucmVzdFByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TZWxlY3RJbnB1dC5WYWx1ZUNvbnRhaW5lcj5cbiAgICA8L1RleHQuQm9keT5cbiAgKTtcbn07XG5cbnR5cGUgVFByb2plY3RTdGFtcHNMaXN0UHJvcHMgPSBQaWNrPFxuICBUUHJvamVjdCxcbiAgJ2lzUHJvZHVjdGlvblByb2plY3QnIHwgJ3N1c3BlbnNpb24nIHwgJ2V4cGlyeSdcbj47XG5jb25zdCBQcm9qZWN0U3RhbXBzTGlzdCA9IChwcm9wczogVFByb2plY3RTdGFtcHNMaXN0UHJvcHMpID0+IChcbiAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwieHNcIiBhbGlnbkl0ZW1zPVwiZmxleC1lbmRcIj5cbiAgICB7cHJvcHMuaXNQcm9kdWN0aW9uUHJvamVjdCAmJiA8UHJvamVjdFN0YW1wLklzUHJvZHVjdGlvbiAvPn1cbiAgICB7cHJvcHMuc3VzcGVuc2lvbiAmJiBwcm9wcy5zdXNwZW5zaW9uLmlzQWN0aXZlICYmIChcbiAgICAgIDxQcm9qZWN0U3RhbXAuSXNTdXNwZW5kZWQgLz5cbiAgICApfVxuICAgIHtwcm9wcy5leHBpcnkgJiYgcHJvcHMuZXhwaXJ5LmlzQWN0aXZlICYmIDxQcm9qZWN0U3RhbXAuSXNFeHBpcmVkIC8+fVxuICAgIHtwcm9wcy5leHBpcnkgJiYgQm9vbGVhbihwcm9wcy5leHBpcnkuZGF5c0xlZnQpICYmIChcbiAgICAgIDxQcm9qZWN0U3RhbXAuV2lsbEV4cGlyZSBkYXlzTGVmdD17cHJvcHMuZXhwaXJ5LmRheXNMZWZ0IX0gLz5cbiAgICApfVxuICA8L1NwYWNpbmdzLlN0YWNrPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RTd2l0Y2hlck9wdGlvbiA9IChwcm9wczogT3B0aW9uUHJvcHM8VE9wdGlvbj4pID0+IHtcbiAgY29uc3QgcHJvamVjdCA9IHByb3BzLmRhdGEgYXMgT3B0aW9uVHlwZTtcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3RJbnB1dC5PcHRpb24gey4uLnByb3BzfT5cbiAgICAgIDxTcGFjaW5ncy5JbmxpbmUgc2NhbGU9XCJ4c1wiIGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dC5Cb2R5XG4gICAgICAgICAgICBmb250V2VpZ2h0PVwibWVkaXVtXCJcbiAgICAgICAgICAgIHRvbmU9e3Byb3BzLmlzRGlzYWJsZWQgPyAndGVydGlhcnknIDogJ2luaGVyaXQnfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtwcm9qZWN0Lm5hbWV9XG4gICAgICAgICAgPC9UZXh0LkJvZHk+XG4gICAgICAgICAgPFRleHQuQ2FwdGlvbiB0b25lPXtwcm9wcy5pc0Rpc2FibGVkID8gJ3RlcnRpYXJ5JyA6ICdzZWNvbmRhcnknfT5cbiAgICAgICAgICAgIHtwcm9qZWN0LmtleX1cbiAgICAgICAgICA8L1RleHQuQ2FwdGlvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPFByb2plY3RTdGFtcHNMaXN0XG4gICAgICAgICAgaXNQcm9kdWN0aW9uUHJvamVjdD17cHJvamVjdC5pc1Byb2R1Y3Rpb25Qcm9qZWN0fVxuICAgICAgICAgIHN1c3BlbnNpb249e3Byb2plY3Quc3VzcGVuc2lvbn1cbiAgICAgICAgICBleHBpcnk9e3Byb2plY3QuZXhwaXJ5fVxuICAgICAgICAvPlxuICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgPC9TZWxlY3RJbnB1dC5PcHRpb24+XG4gICk7XG59O1xuXG5jb25zdCBtYXBQcm9qZWN0c1RvT3B0aW9ucyA9IG1lbW9pemUoKHByb2plY3RzKSA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbGFiZWw6IDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5wcm9qZWN0c0xhYmVsfSAvPixcbiAgICAgIG9wdGlvbnM6IHByb2plY3RzLm1hcCgocHJvamVjdDogVFByb2plY3QpID0+ICh7XG4gICAgICAgIGtleTogcHJvamVjdC5rZXksXG4gICAgICAgIG5hbWU6IHByb2plY3QubmFtZSxcbiAgICAgICAgbGFiZWw6IHByb2plY3QubmFtZSxcbiAgICAgICAgdmFsdWU6IHByb2plY3Qua2V5LFxuICAgICAgICBzdXNwZW5zaW9uOiBwcm9qZWN0LnN1c3BlbnNpb24sXG4gICAgICAgIGV4cGlyeTogcHJvamVjdC5leHBpcnksXG4gICAgICAgIGlzUHJvZHVjdGlvblByb2plY3Q6IHByb2plY3QuaXNQcm9kdWN0aW9uUHJvamVjdCxcbiAgICAgIH0pKSxcbiAgICB9LFxuICBdO1xufSk7XG5cbmNvbnN0IEN1c3RvbU1lbnVMaXN0ID0gKHByb3BzOiBNZW51TGlzdFByb3BzPFRPcHRpb24+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxjb21wb25lbnRzLk1lbnVMaXN0IHsuLi5wcm9wc30+e3Byb3BzLmNoaWxkcmVufTwvY29tcG9uZW50cy5NZW51TGlzdD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IENvbnRyb2wgPSAocHJvcHM6IENvbnRyb2xQcm9wczxUT3B0aW9uPikgPT4gKFxuICA8Y29tcG9uZW50cy5Db250cm9sXG4gICAgey4uLnByb3BzfVxuICAgIGNzcz17Y3NzYFxuICAgICAgbWluLXdpZHRoOiAke2Rlc2lnblRva2Vucy5jb25zdHJhaW50M307XG4gICAgYH1cbiAgPlxuICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgPC9jb21wb25lbnRzLkNvbnRyb2w+XG4pO1xuXG5jb25zdCByZWRpcmVjdFRvID0gKHRhcmdldFVybDogc3RyaW5nKSA9PiBsb2NhdGlvbi5yZXBsYWNlKHRhcmdldFVybCk7XG5cbmNvbnN0IFByb2plY3RTd2l0Y2hlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgeyBsb2FkaW5nLCBkYXRhIH0gPSB1c2VNY1F1ZXJ5PFxuICAgIFRGZXRjaFVzZXJQcm9qZWN0c1F1ZXJ5LFxuICAgIFRGZXRjaFVzZXJQcm9qZWN0c1F1ZXJ5VmFyaWFibGVzXG4gID4oUHJvamVjdHNRdWVyeSwge1xuICAgIGNvbnRleHQ6IHtcbiAgICAgIHRhcmdldDogR1JBUEhRTF9UQVJHRVRTLk1FUkNIQU5UX0NFTlRFUl9CQUNLRU5ELFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmIChsb2FkaW5nKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8QWNjZXNzaWJsZUhpZGRlbj5cbiAgICAgICAgPHNwYW4gaWQ9e1BST0pFQ1RfU1dJVENIRVJfTEFCRUxfSUR9PlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5wcm9qZWN0c0xhYmVsfSAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0FjY2Vzc2libGVIaWRkZW4+XG4gICAgICA8U2VsZWN0SW5wdXRcbiAgICAgICAgdmFsdWU9e3Byb3BzLnByb2plY3RLZXkgfHwgJyd9XG4gICAgICAgIG5hbWU9XCJwcm9qZWN0LXN3aXRjaGVyXCJcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtQUk9KRUNUX1NXSVRDSEVSX0xBQkVMX0lEfVxuICAgICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQcm9qZWN0S2V5ID0gZXZlbnQudGFyZ2V0LnZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRQcm9qZWN0S2V5ICE9PSBwcm9wcy5wcm9qZWN0S2V5KSB7XG4gICAgICAgICAgICBpZiAod2luZG93LmFwcC5fX0RFVkVMT1BNRU5UX18/Lm9pZGM/LmF1dGhvcml6ZVVybCkge1xuICAgICAgICAgICAgICBvaWRjU3RvcmFnZS5zZXRBY3RpdmVQcm9qZWN0S2V5KHNlbGVjdGVkUHJvamVjdEtleSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFdlIHNpbXBseSByZWRpcmVjdCB0byBhIFwibmV3XCIgYnJvd3NlciBwYWdlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZVxuICAgICAgICAgICAgLy8gaGlzdG9yeSByb3V0ZXIuIFRoaXMgd2lsbCBzaW1wbGlmeSBhIGxvdCBvZiB0aGluZ3MgYW5kIGF2b2lkIHBvc3NpYmxlXG4gICAgICAgICAgICAvLyBwcm9ibGVtcyBsaWtlIGUuZy4gcmVzZXR0aW5nIHRoZSBzdG9yZS9zdGF0ZS5cbiAgICAgICAgICAgIHJlZGlyZWN0VG8oYC8ke3NlbGVjdGVkUHJvamVjdEtleX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIG9wdGlvbnM9e1xuICAgICAgICAgIChkYXRhICYmXG4gICAgICAgICAgICBkYXRhLnVzZXIgJiZcbiAgICAgICAgICAgIG1hcFByb2plY3RzVG9PcHRpb25zKGRhdGEudXNlci5wcm9qZWN0cy5yZXN1bHRzKSkgfHxcbiAgICAgICAgICBbXVxuICAgICAgICB9XG4gICAgICAgIGlzT3B0aW9uRGlzYWJsZWQ9eyhvcHRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBwcm9qZWN0ID0gb3B0aW9uIGFzIE9wdGlvblR5cGU7XG4gICAgICAgICAgcmV0dXJuIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSB8fCBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZTtcbiAgICAgICAgfX1cbiAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgIE9wdGlvbjogUHJvamVjdFN3aXRjaGVyT3B0aW9uLFxuICAgICAgICAgIFZhbHVlQ29udGFpbmVyLFxuICAgICAgICAgIE1lbnVMaXN0OiBDdXN0b21NZW51TGlzdCxcbiAgICAgICAgICBDb250cm9sLFxuICAgICAgICB9fVxuICAgICAgICBpc0NsZWFyYWJsZT17ZmFsc2V9XG4gICAgICAgIGJhY2tzcGFjZVJlbW92ZXNWYWx1ZT17ZmFsc2V9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc2VhcmNoUGxhY2Vob2xkZXIpfVxuICAgICAgICBub09wdGlvbnNNZXNzYWdlPXsoKSA9PiBpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMubm9SZXN1bHRzKX1cbiAgICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9eydhdXRvJ31cbiAgICAgICAgYXBwZWFyYW5jZT1cInF1aWV0XCJcbiAgICAgICAgbWF4TWVudUhlaWdodD17MzgwfVxuICAgICAgICBtYXhNZW51V2lkdGg9ezh9XG4gICAgICAgIG1pbk1lbnVXaWR0aD17OH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuUHJvamVjdFN3aXRjaGVyLmRpc3BsYXlOYW1lID0gJ1Byb2plY3RTd2l0Y2hlcic7XG5cbmV4cG9ydCBkZWZhdWx0IFByb2plY3RTd2l0Y2hlcjtcbiJdfQ== */",
310
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$4
311
- };
312
- const ProjectSwitcherOption = props => {
313
- const project = props.data;
314
- return jsxRuntime.jsx(SelectInput__default["default"].Option, _objectSpread$a(_objectSpread$a({}, props), {}, {
315
- children: jsxRuntime.jsxs(Spacings__default["default"].Inline, {
316
- scale: "xs",
317
- justifyContent: "space-between",
318
- children: [jsxRuntime.jsxs("div", {
319
- css: _ref$3,
320
- children: [jsxRuntime.jsx(Text__default["default"].Body, {
321
- fontWeight: "medium",
322
- tone: props.isDisabled ? 'tertiary' : 'inherit',
323
- children: project.name
324
- }), jsxRuntime.jsx(Text__default["default"].Caption, {
325
- tone: props.isDisabled ? 'tertiary' : 'secondary',
326
- children: project.key
327
- })]
328
- }), jsxRuntime.jsx(ProjectStampsList, {
329
- isProductionProject: project.isProductionProject,
330
- suspension: project.suspension,
331
- expiry: project.expiry
332
- })]
333
- })
334
- }));
335
- };
336
- const mapProjectsToOptions = memoize__default["default"](projects => {
337
- return [{
338
- label: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$a({}, messages.projectsLabel)),
339
- options: _mapInstanceProperty__default["default"](projects).call(projects, project => ({
340
- key: project.key,
341
- name: project.name,
342
- label: project.name,
343
- value: project.key,
344
- suspension: project.suspension,
345
- expiry: project.expiry,
346
- isProductionProject: project.isProductionProject
347
- }))
348
- }];
349
- });
350
- const CustomMenuList = props => {
351
- return jsxRuntime.jsx("div", {
352
- children: jsxRuntime.jsx(reactSelect.components.MenuList, _objectSpread$a(_objectSpread$a({}, props), {}, {
353
- children: props.children
354
- }))
355
- });
356
- };
357
- const Control = props => jsxRuntime.jsx(reactSelect.components.Control, _objectSpread$a(_objectSpread$a({}, props), {}, {
358
- css: /*#__PURE__*/react$1.css("min-width:", designSystem.designTokens.constraint3, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:Control;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3Qtc3dpdGNoZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVJWSIsImZpbGUiOiJwcm9qZWN0LXN3aXRjaGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBtZW1vaXplIGZyb20gJ21lbW9pemUtb25lJztcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHVzZUludGwgfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB0eXBlIHtcbiAgT3B0aW9uUHJvcHMsXG4gIFZhbHVlQ29udGFpbmVyUHJvcHMsXG4gIE1lbnVMaXN0UHJvcHMsXG4gIENvbnRyb2xQcm9wcyxcbn0gZnJvbSAncmVhY3Qtc2VsZWN0JztcbmltcG9ydCB7IGNvbXBvbmVudHMgfSBmcm9tICdyZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgUHJvamVjdFN0YW1wIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICB1c2VNY1F1ZXJ5LFxuICBvaWRjU3RvcmFnZSxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7IEdSQVBIUUxfVEFSR0VUUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgQWNjZXNzaWJsZUhpZGRlbiBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9hY2Nlc3NpYmxlLWhpZGRlbic7XG5pbXBvcnQgeyBkZXNpZ25Ub2tlbnMgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9kZXNpZ24tc3lzdGVtJztcbmltcG9ydCBTZWxlY3RJbnB1dCwgeyBUT3B0aW9uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc2VsZWN0LWlucHV0JztcbmltcG9ydCBTcGFjaW5ncyBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zcGFjaW5ncyc7XG5pbXBvcnQgVGV4dCBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC90ZXh0JztcbmltcG9ydCB0eXBlIHtcbiAgVFByb2plY3QsXG4gIFRGZXRjaFVzZXJQcm9qZWN0c1F1ZXJ5LFxuICBURmV0Y2hVc2VyUHJvamVjdHNRdWVyeVZhcmlhYmxlcyxcbn0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGxvY2F0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9jYXRpb24nO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuaW1wb3J0IFByb2plY3RzUXVlcnkgZnJvbSAnLi9wcm9qZWN0LXN3aXRjaGVyLm1jLmdyYXBocWwnO1xuXG5kZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuXG50eXBlIFByb3BzID0ge1xuICBwcm9qZWN0S2V5Pzogc3RyaW5nO1xufTtcbnR5cGUgT3B0aW9uVHlwZSA9IFBpY2s8XG4gIFRQcm9qZWN0LFxuICAna2V5JyB8ICduYW1lJyB8ICdzdXNwZW5zaW9uJyB8ICdleHBpcnknIHwgJ2lzUHJvZHVjdGlvblByb2plY3QnXG4+ICZcbiAgVE9wdGlvbjtcblxuY29uc3QgUFJPSkVDVF9TV0lUQ0hFUl9MQUJFTF9JRCA9ICdwcm9qZWN0LXN3aXRjaGVyLWxhYmVsJztcblxuZXhwb3J0IGNvbnN0IFZhbHVlQ29udGFpbmVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnJlc3RQcm9wc1xufTogVmFsdWVDb250YWluZXJQcm9wczxUT3B0aW9uPikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxUZXh0LkJvZHkgZm9udFdlaWdodD1cIm1lZGl1bVwiIGFzPVwic3BhblwiPlxuICAgICAgPFNlbGVjdElucHV0LlZhbHVlQ29udGFpbmVyIHsuLi5yZXN0UHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdElucHV0LlZhbHVlQ29udGFpbmVyPlxuICAgIDwvVGV4dC5Cb2R5PlxuICApO1xufTtcblxudHlwZSBUUHJvamVjdFN0YW1wc0xpc3RQcm9wcyA9IFBpY2s8XG4gIFRQcm9qZWN0LFxuICAnaXNQcm9kdWN0aW9uUHJvamVjdCcgfCAnc3VzcGVuc2lvbicgfCAnZXhwaXJ5J1xuPjtcbmNvbnN0IFByb2plY3RTdGFtcHNMaXN0ID0gKHByb3BzOiBUUHJvamVjdFN0YW1wc0xpc3RQcm9wcykgPT4gKFxuICA8U3BhY2luZ3MuU3RhY2sgc2NhbGU9XCJ4c1wiIGFsaWduSXRlbXM9XCJmbGV4LWVuZFwiPlxuICAgIHtwcm9wcy5pc1Byb2R1Y3Rpb25Qcm9qZWN0ICYmIDxQcm9qZWN0U3RhbXAuSXNQcm9kdWN0aW9uIC8+fVxuICAgIHtwcm9wcy5zdXNwZW5zaW9uICYmIHByb3BzLnN1c3BlbnNpb24uaXNBY3RpdmUgJiYgKFxuICAgICAgPFByb2plY3RTdGFtcC5Jc1N1c3BlbmRlZCAvPlxuICAgICl9XG4gICAge3Byb3BzLmV4cGlyeSAmJiBwcm9wcy5leHBpcnkuaXNBY3RpdmUgJiYgPFByb2plY3RTdGFtcC5Jc0V4cGlyZWQgLz59XG4gICAge3Byb3BzLmV4cGlyeSAmJiBCb29sZWFuKHByb3BzLmV4cGlyeS5kYXlzTGVmdCkgJiYgKFxuICAgICAgPFByb2plY3RTdGFtcC5XaWxsRXhwaXJlIGRheXNMZWZ0PXtwcm9wcy5leHBpcnkuZGF5c0xlZnQhfSAvPlxuICAgICl9XG4gIDwvU3BhY2luZ3MuU3RhY2s+XG4pO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdFN3aXRjaGVyT3B0aW9uID0gKHByb3BzOiBPcHRpb25Qcm9wczxUT3B0aW9uPikgPT4ge1xuICBjb25zdCBwcm9qZWN0ID0gcHJvcHMuZGF0YSBhcyBPcHRpb25UeXBlO1xuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdElucHV0Lk9wdGlvbiB7Li4ucHJvcHN9PlxuICAgICAgPFNwYWNpbmdzLklubGluZSBzY2FsZT1cInhzXCIganVzdGlmeUNvbnRlbnQ9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0LkJvZHlcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJtZWRpdW1cIlxuICAgICAgICAgICAgdG9uZT17cHJvcHMuaXNEaXNhYmxlZCA/ICd0ZXJ0aWFyeScgOiAnaW5oZXJpdCd9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Byb2plY3QubmFtZX1cbiAgICAgICAgICA8L1RleHQuQm9keT5cbiAgICAgICAgICA8VGV4dC5DYXB0aW9uIHRvbmU9e3Byb3BzLmlzRGlzYWJsZWQgPyAndGVydGlhcnknIDogJ3NlY29uZGFyeSd9PlxuICAgICAgICAgICAge3Byb2plY3Qua2V5fVxuICAgICAgICAgIDwvVGV4dC5DYXB0aW9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8UHJvamVjdFN0YW1wc0xpc3RcbiAgICAgICAgICBpc1Byb2R1Y3Rpb25Qcm9qZWN0PXtwcm9qZWN0LmlzUHJvZHVjdGlvblByb2plY3R9XG4gICAgICAgICAgc3VzcGVuc2lvbj17cHJvamVjdC5zdXNwZW5zaW9ufVxuICAgICAgICAgIGV4cGlyeT17cHJvamVjdC5leHBpcnl9XG4gICAgICAgIC8+XG4gICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICA8L1NlbGVjdElucHV0Lk9wdGlvbj5cbiAgKTtcbn07XG5cbmNvbnN0IG1hcFByb2plY3RzVG9PcHRpb25zID0gbWVtb2l6ZSgocHJvamVjdHMpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBsYWJlbDogPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLnByb2plY3RzTGFiZWx9IC8+LFxuICAgICAgb3B0aW9uczogcHJvamVjdHMubWFwKChwcm9qZWN0OiBUUHJvamVjdCkgPT4gKHtcbiAgICAgICAga2V5OiBwcm9qZWN0LmtleSxcbiAgICAgICAgbmFtZTogcHJvamVjdC5uYW1lLFxuICAgICAgICBsYWJlbDogcHJvamVjdC5uYW1lLFxuICAgICAgICB2YWx1ZTogcHJvamVjdC5rZXksXG4gICAgICAgIHN1c3BlbnNpb246IHByb2plY3Quc3VzcGVuc2lvbixcbiAgICAgICAgZXhwaXJ5OiBwcm9qZWN0LmV4cGlyeSxcbiAgICAgICAgaXNQcm9kdWN0aW9uUHJvamVjdDogcHJvamVjdC5pc1Byb2R1Y3Rpb25Qcm9qZWN0LFxuICAgICAgfSkpLFxuICAgIH0sXG4gIF07XG59KTtcblxuY29uc3QgQ3VzdG9tTWVudUxpc3QgPSAocHJvcHM6IE1lbnVMaXN0UHJvcHM8VE9wdGlvbj4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPGNvbXBvbmVudHMuTWVudUxpc3Qgey4uLnByb3BzfT57cHJvcHMuY2hpbGRyZW59PC9jb21wb25lbnRzLk1lbnVMaXN0PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgQ29udHJvbCA9IChwcm9wczogQ29udHJvbFByb3BzPFRPcHRpb24+KSA9PiAoXG4gIDxjb21wb25lbnRzLkNvbnRyb2xcbiAgICB7Li4ucHJvcHN9XG4gICAgY3NzPXtjc3NgXG4gICAgICBtaW4td2lkdGg6ICR7ZGVzaWduVG9rZW5zLmNvbnN0cmFpbnQzfTtcbiAgICBgfVxuICA+XG4gICAge3Byb3BzLmNoaWxkcmVufVxuICA8L2NvbXBvbmVudHMuQ29udHJvbD5cbik7XG5cbmNvbnN0IHJlZGlyZWN0VG8gPSAodGFyZ2V0VXJsOiBzdHJpbmcpID0+IGxvY2F0aW9uLnJlcGxhY2UodGFyZ2V0VXJsKTtcblxuY29uc3QgUHJvamVjdFN3aXRjaGVyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICBjb25zdCB7IGxvYWRpbmcsIGRhdGEgfSA9IHVzZU1jUXVlcnk8XG4gICAgVEZldGNoVXNlclByb2plY3RzUXVlcnksXG4gICAgVEZldGNoVXNlclByb2plY3RzUXVlcnlWYXJpYWJsZXNcbiAgPihQcm9qZWN0c1F1ZXJ5LCB7XG4gICAgY29udGV4dDoge1xuICAgICAgdGFyZ2V0OiBHUkFQSFFMX1RBUkdFVFMuTUVSQ0hBTlRfQ0VOVEVSX0JBQ0tFTkQsXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxBY2Nlc3NpYmxlSGlkZGVuPlxuICAgICAgICA8c3BhbiBpZD17UFJPSkVDVF9TV0lUQ0hFUl9MQUJFTF9JRH0+XG4gICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLnByb2plY3RzTGFiZWx9IC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvQWNjZXNzaWJsZUhpZGRlbj5cbiAgICAgIDxTZWxlY3RJbnB1dFxuICAgICAgICB2YWx1ZT17cHJvcHMucHJvamVjdEtleSB8fCAnJ31cbiAgICAgICAgbmFtZT1cInByb2plY3Qtc3dpdGNoZXJcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e1BST0pFQ1RfU1dJVENIRVJfTEFCRUxfSUR9XG4gICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3RLZXkgPSBldmVudC50YXJnZXQudmFsdWUgYXMgc3RyaW5nO1xuICAgICAgICAgIGlmIChzZWxlY3RlZFByb2plY3RLZXkgIT09IHByb3BzLnByb2plY3RLZXkpIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuYXBwLl9fREVWRUxPUE1FTlRfXz8ub2lkYz8uYXV0aG9yaXplVXJsKSB7XG4gICAgICAgICAgICAgIG9pZGNTdG9yYWdlLnNldEFjdGl2ZVByb2plY3RLZXkoc2VsZWN0ZWRQcm9qZWN0S2V5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gV2Ugc2ltcGx5IHJlZGlyZWN0IHRvIGEgXCJuZXdcIiBicm93c2VyIHBhZ2UsIGluc3RlYWQgb2YgdXNpbmcgdGhlXG4gICAgICAgICAgICAvLyBoaXN0b3J5IHJvdXRlci4gVGhpcyB3aWxsIHNpbXBsaWZ5IGEgbG90IG9mIHRoaW5ncyBhbmQgYXZvaWQgcG9zc2libGVcbiAgICAgICAgICAgIC8vIHByb2JsZW1zIGxpa2UgZS5nLiByZXNldHRpbmcgdGhlIHN0b3JlL3N0YXRlLlxuICAgICAgICAgICAgcmVkaXJlY3RUbyhgLyR7c2VsZWN0ZWRQcm9qZWN0S2V5fWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgb3B0aW9ucz17XG4gICAgICAgICAgKGRhdGEgJiZcbiAgICAgICAgICAgIGRhdGEudXNlciAmJlxuICAgICAgICAgICAgbWFwUHJvamVjdHNUb09wdGlvbnMoZGF0YS51c2VyLnByb2plY3RzLnJlc3VsdHMpKSB8fFxuICAgICAgICAgIFtdXG4gICAgICAgIH1cbiAgICAgICAgaXNPcHRpb25EaXNhYmxlZD17KG9wdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb2plY3QgPSBvcHRpb24gYXMgT3B0aW9uVHlwZTtcbiAgICAgICAgICByZXR1cm4gcHJvamVjdC5zdXNwZW5zaW9uLmlzQWN0aXZlIHx8IHByb2plY3QuZXhwaXJ5LmlzQWN0aXZlO1xuICAgICAgICB9fVxuICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgT3B0aW9uOiBQcm9qZWN0U3dpdGNoZXJPcHRpb24sXG4gICAgICAgICAgVmFsdWVDb250YWluZXIsXG4gICAgICAgICAgTWVudUxpc3Q6IEN1c3RvbU1lbnVMaXN0LFxuICAgICAgICAgIENvbnRyb2wsXG4gICAgICAgIH19XG4gICAgICAgIGlzQ2xlYXJhYmxlPXtmYWxzZX1cbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlPXtmYWxzZX1cbiAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5zZWFyY2hQbGFjZWhvbGRlcil9XG4gICAgICAgIG5vT3B0aW9uc01lc3NhZ2U9eygpID0+IGludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5ub1Jlc3VsdHMpfVxuICAgICAgICBob3Jpem9udGFsQ29uc3RyYWludD17J2F1dG8nfVxuICAgICAgICBhcHBlYXJhbmNlPVwicXVpZXRcIlxuICAgICAgICBtYXhNZW51SGVpZ2h0PXszODB9XG4gICAgICAgIG1heE1lbnVXaWR0aD17OH1cbiAgICAgICAgbWluTWVudVdpZHRoPXs4fVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Qcm9qZWN0U3dpdGNoZXIuZGlzcGxheU5hbWUgPSAnUHJvamVjdFN3aXRjaGVyJztcblxuZXhwb3J0IGRlZmF1bHQgUHJvamVjdFN3aXRjaGVyO1xuIl19 */"),
359
- children: props.children
360
- }));
361
- const redirectTo = targetUrl => location.location.replace(targetUrl);
362
- const ProjectSwitcher = props => {
363
- const intl = reactIntl.useIntl();
364
- const _useMcQuery = applicationShellConnectors.useMcQuery(ProjectsQuery, {
365
- context: {
366
- target: constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND
367
- }
368
- }),
369
- loading = _useMcQuery.loading,
370
- data = _useMcQuery.data;
371
- if (loading) return null;
372
- return jsxRuntime.jsxs("div", {
373
- children: [jsxRuntime.jsx(AccessibleHidden__default["default"], {
374
- children: jsxRuntime.jsx("span", {
375
- id: PROJECT_SWITCHER_LABEL_ID,
376
- children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$a({}, messages.projectsLabel))
377
- })
378
- }), jsxRuntime.jsx(SelectInput__default["default"], {
379
- value: props.projectKey || '',
380
- name: "project-switcher",
381
- "aria-labelledby": PROJECT_SWITCHER_LABEL_ID,
382
- onChange: event => {
383
- const selectedProjectKey = event.target.value;
384
- if (selectedProjectKey !== props.projectKey) {
385
- if (window.app.__DEVELOPMENT__?.oidc?.authorizeUrl) {
386
- applicationShellConnectors.oidcStorage.setActiveProjectKey(selectedProjectKey);
387
- }
388
-
389
- // We simply redirect to a "new" browser page, instead of using the
390
- // history router. This will simplify a lot of things and avoid possible
391
- // problems like e.g. resetting the store/state.
392
- redirectTo(`/${selectedProjectKey}`);
393
- }
394
- },
395
- options: data && data.user && mapProjectsToOptions(data.user.projects.results) || [],
396
- isOptionDisabled: option => {
397
- const project = option;
398
- return project.suspension.isActive || project.expiry.isActive;
399
- },
400
- components: {
401
- Option: ProjectSwitcherOption,
402
- ValueContainer,
403
- MenuList: CustomMenuList,
404
- Control
405
- },
406
- isClearable: false,
407
- backspaceRemovesValue: false,
408
- placeholder: intl.formatMessage(messages.searchPlaceholder),
409
- noOptionsMessage: () => intl.formatMessage(messages.noResults),
410
- horizontalConstraint: 'auto',
411
- appearance: "quiet",
412
- maxMenuHeight: 380,
413
- maxMenuWidth: 8,
414
- minMenuWidth: 8
415
- })]
416
- });
417
- };
418
- ProjectSwitcher.displayName = 'ProjectSwitcher';
419
-
420
- // eslint-disable-next-line import/prefer-default-export
421
- const REQUESTS_IN_FLIGHT_LOADER_DOM_ID = 'loader-for-requests-in-flight';
422
-
423
- const UserSettingsMenu = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./user-settings-menu-b8359b8b.cjs.dev.js' /* webpackChunkName: "user-settings-menu" */); }));
424
-
425
- function _EMOTION_STRINGIFIED_CSS_ERROR__$3() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
426
- var _ref$2 = process.env.NODE_ENV === "production" ? {
427
- name: "zjik7",
428
- styles: "display:flex"
429
- } : {
430
- name: "183miex-AppBar",
431
- styles: "display:flex;label:AppBar;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlIZ0IiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */",
432
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
433
- };
434
- var _ref2$1 = process.env.NODE_ENV === "production" ? {
435
- name: "36bnqj",
436
- styles: "display:flex;flex:1"
437
- } : {
438
- name: "p3e2aw-AppBar",
439
- styles: "display:flex;flex:1;label:AppBar;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdHc0IiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */",
440
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
441
- };
442
- var _ref3$1 = process.env.NODE_ENV === "production" ? {
443
- name: "w3f7al",
444
- styles: "height:22px"
445
- } : {
446
- name: "1ebvy0g-AppBar",
447
- styles: "height:22px;label:AppBar;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZFZ0MiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */",
448
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
449
- };
450
- const AppBar = props => {
451
- const previousProjectKey = getPreviousProjectKey(props.user?.defaultProjectKey ?? undefined);
452
- return jsxRuntime.jsxs("div", {
453
- css: /*#__PURE__*/react$1.css("background-color:", designSystem.designTokens.colorSurface, ";box-shadow:0px 2px 5px 0px rgba(0, 0, 0, 0.15);padding:0 40px;min-height:", oidc.DIMENSIONS.header, ";position:relative;width:100%;z-index:20000;display:flex;align-items:center;justify-content:space-between;" + (process.env.NODE_ENV === "production" ? "" : ";label:AppBar;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCYyIsImZpbGUiOiJhcHAtYmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IFByb2plY3RTdGFtcCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIGFzIHVpa2l0RGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgU3BhY2luZ3MgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc3BhY2luZ3MnO1xuaW1wb3J0IHsgQ09OVEFJTkVSUywgRElNRU5TSU9OUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBCYWNrVG9Qcm9qZWN0IGZyb20gJy4uL2JhY2stdG8tcHJvamVjdCc7XG5pbXBvcnQgTG9hZGluZ1BsYWNlaG9sZGVyIGZyb20gJy4uL2xvYWRpbmctcGxhY2Vob2xkZXInO1xuaW1wb3J0IFByb2plY3RTd2l0Y2hlciBmcm9tICcuLi9wcm9qZWN0LXN3aXRjaGVyJztcbmltcG9ydCB7IFJFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEIH0gZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlci9jb25zdGFudHMnO1xuaW1wb3J0IFVzZXJTZXR0aW5nc01lbnUgZnJvbSAnLi4vdXNlci1zZXR0aW5ncy1tZW51JztcblxudHlwZSBQcm9wcyA9IHtcbiAgdXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXTtcbiAgcHJvamVjdEtleUZyb21Vcmw/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBBcHBCYXIgPSAocHJvcHM6IFByb3BzKSA9PiB7XG4gIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9IGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICBwcm9wcy51c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Vpa2l0RGVzaWduVG9rZW5zLmNvbG9yU3VyZmFjZX07XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAycHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICBwYWRkaW5nOiAwIDQwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6ICR7RElNRU5TSU9OUy5oZWFkZXJ9O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB6LWluZGV4OiAyMDAwMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYH1cbiAgICAgIGRhdGEtdGVzdD1cInRvcC1uYXZpZ2F0aW9uXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICR7dWlraXREZXNpZ25Ub2tlbnMuc3BhY2luZzU1fTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxTcGFjaW5ncy5JbmxpbmUgc2NhbGU9XCJtXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICBnYXA6ICR7dWlraXREZXNpZ25Ub2tlbnMuc3BhY2luZzMwfTtcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcHJvcHMudXNlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ1BsYWNlaG9sZGVyIHNoYXBlPVwicmVjdFwiIHNpemU9XCJzXCIgLz47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gVGhlIGA8UHJvamVjdFN3aXRjaGVyPmAgc2hvdWxkIGJlIHJlbmRlcmVkIG9ubHkgaWYgdGhlXG4gICAgICAgICAgICAgIC8vIHVzZXIgaXMgZmV0Y2hlZCBhbmQgdGhlIHVzZXIgaGFzIHByb2plY3RzIHdoaWxlIHRoZSBhcHAgcnVucyBpbiBhbiBwcm9qZWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgIGlmIChwcm9wcy51c2VyLnByb2plY3RzLnRvdGFsID4gMCAmJiBwcm9wcy5wcm9qZWN0S2V5RnJvbVVybCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUHJvamVjdCA9IHByb3BzLnVzZXIucHJvamVjdHMucmVzdWx0cy5maW5kKFxuICAgICAgICAgICAgICAgICAgKHByb2plY3QpID0+IHByb2plY3Qua2V5ID09PSBwcm9wcy5wcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICBnYXA6ICR7dWlraXREZXNpZ25Ub2tlbnMuc3BhY2luZzIwfTtcbiAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRQcm9qZWN0Py5pc1Byb2R1Y3Rpb25Qcm9qZWN0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdFN0YW1wLklzUHJvZHVjdGlvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8UHJvamVjdFN3aXRjaGVyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBpZiB0aGUgYHByb2plY3RLZXlgIHBhcmFtXG4gICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2YgcHJvamVjdHMuIEluIHN1Y2ggY2FzZVxuICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBkcm9wZG93biB3aWxsIHN0aWxsIGJlIHJlbmRlcmVkIGJ1dCBubyBwcm9qZWN0IHdpbGwgYmUgc2VsZWN0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmaW5lIGJlY2FzZSB0aGUgdXNlciBoYXMgc3RpbGwgdGhlIHBvc3NpYmlsaXR5IHRvIFwic3dpdGNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhIHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvcHMucHJvamVjdEtleUZyb21VcmwgfHwgcHJldmlvdXNQcm9qZWN0S2V5fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIuZGVmYXVsdFByb2plY3RLZXkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICByZXR1cm4gPEJhY2tUb1Byb2plY3QgcHJvamVjdEtleT17cHJldmlvdXNQcm9qZWN0S2V5fSAvPjtcbiAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICB7LyogVGhpcyBub2RlIGlzIHVzZWQgYnkgYSByZWFjdCBwb3J0YWwgKi99XG4gICAgICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxPQ0FMRV9TV0lUQ0hFUn0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBpZD17UkVRVUVTVFNfSU5fRkxJR0hUX0xPQURFUl9ET01fSUR9XG4gICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9e0NPTlRBSU5FUlMuTEVGVF9PRl9QUk9GSUxFfT48L2Rpdj5cbiAgICAgICAge3Byb3BzLnVzZXIgPyAoXG4gICAgICAgICAgPFVzZXJTZXR0aW5nc01lbnVcbiAgICAgICAgICAgIGxhbmd1YWdlPXtwcm9wcy51c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgZmlyc3ROYW1lPXtwcm9wcy51c2VyLmZpcnN0TmFtZX1cbiAgICAgICAgICAgIGxhc3ROYW1lPXtwcm9wcy51c2VyLmxhc3ROYW1lfVxuICAgICAgICAgICAgZ3JhdmF0YXJIYXNoPXtwcm9wcy51c2VyLmdyYXZhdGFySGFzaH1cbiAgICAgICAgICAgIGVtYWlsPXtwcm9wcy51c2VyLmVtYWlsfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cImRvdFwiIHNpemU9XCJsXCIgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcbkFwcEJhci5kaXNwbGF5TmFtZSA9ICdBcHBCYXInO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBCYXI7XG4iXX0= */"),
454
- "data-test": "top-navigation",
455
- children: [jsxRuntime.jsx("div", {
456
- css: /*#__PURE__*/react$1.css("float:right;font-weight:normal;font-size:1rem;margin-right:", designSystem.designTokens.spacing55, ";display:flex;align-items:center;" + (process.env.NODE_ENV === "production" ? "" : ";label:AppBar;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdDZ0IiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */"),
457
- children: jsxRuntime.jsxs(Spacings__default["default"].Inline, {
458
- scale: "m",
459
- alignItems: "center",
460
- children: [jsxRuntime.jsxs("div", {
461
- css: /*#__PURE__*/react$1.css("display:flex;gap:", designSystem.designTokens.spacing30, ";align-items:center;" + (process.env.NODE_ENV === "production" ? "" : ";label:AppBar;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1Eb0IiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */"),
462
- children: [(() => {
463
- if (!props.user) {
464
- return jsxRuntime.jsx(LoadingPlaceholder, {
465
- shape: "rect",
466
- size: "s"
467
- });
468
- }
469
- // The `<ProjectSwitcher>` should be rendered only if the
470
- // user is fetched and the user has projects while the app runs in an project context.
471
- if (props.user.projects.total > 0 && props.projectKeyFromUrl) {
472
- var _context;
473
- const selectedProject = _findInstanceProperty__default["default"](_context = props.user.projects.results).call(_context, project => project.key === props.projectKeyFromUrl);
474
- return jsxRuntime.jsxs("div", {
475
- css: /*#__PURE__*/react$1.css("display:flex;gap:", designSystem.designTokens.spacing20, ";align-items:center;" + (process.env.NODE_ENV === "production" ? "" : ";label:AppBar;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFFNEIiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */"),
476
- children: [selectedProject?.isProductionProject && jsxRuntime.jsx("div", {
477
- css: _ref3$1,
478
- children: jsxRuntime.jsx(applicationComponents.ProjectStamp.IsProduction, {})
479
- }), jsxRuntime.jsx(ProjectSwitcher
480
- // In this case it's not necessary to check if the `projectKey` param
481
- // is included in the list of projects. In such case
482
- // the dropdown will still be rendered but no project will be selected.
483
- // This is fine becase the user has still the possibility to "switch"
484
- // to a project.
485
- , {
486
- projectKey: props.projectKeyFromUrl || previousProjectKey
487
- })]
488
- });
489
- }
490
- if (!props.user.defaultProjectKey) return null;
491
- return jsxRuntime.jsx(BackToProject, {
492
- projectKey: previousProjectKey
493
- });
494
- })(), jsxRuntime.jsx("div", {
495
- id: oidc.CONTAINERS.LOCALE_SWITCHER
496
- })]
497
- }), jsxRuntime.jsx(Spacings__default["default"].Inline, {
498
- children: jsxRuntime.jsx("div", {
499
- id: REQUESTS_IN_FLIGHT_LOADER_DOM_ID,
500
- css: _ref2$1
501
- })
502
- })]
503
- })
504
- }), jsxRuntime.jsxs("div", {
505
- css: _ref$2,
506
- children: [jsxRuntime.jsx("div", {
507
- id: oidc.CONTAINERS.LEFT_OF_PROFILE
508
- }), props.user ? jsxRuntime.jsx(UserSettingsMenu, {
509
- language: props.user.language,
510
- firstName: props.user.firstName,
511
- lastName: props.user.lastName,
512
- gravatarHash: props.user.gravatarHash,
513
- email: props.user.email
514
- }) : jsxRuntime.jsx(LoadingPlaceholder, {
515
- shape: "dot",
516
- size: "l"
517
- })]
518
- })]
519
- });
520
- };
521
- AppBar.displayName = 'AppBar';
522
-
523
- const ApplicationLoader = props => jsxRuntime.jsxs("div", {
524
- css: /*#__PURE__*/react$1.css("display:flex;align-items:center;justify-content:center;flex:1;flex-direction:column;height:100vh;padding:", designSystem.customProperties.spacingL, ";>*+*{margin:", designSystem.customProperties.spacingL, " 0 0;}" + (process.env.NODE_ENV === "production" ? "" : ";label:ApplicationLoader;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLWxvYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV1kiLCJmaWxlIjoiYXBwbGljYXRpb24tbG9hZGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBDVExvZ29TVkcgZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXNzZXRzL2ltYWdlcy9jdC1sb2dvLnN2Zyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcblxudHlwZSBQcm9wcyA9IHtcbiAgc2hvd0xvZ28/OiBib29sZWFuO1xufTtcblxuY29uc3QgQXBwbGljYXRpb25Mb2FkZXIgPSAocHJvcHM6IFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e2Nzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBmbGV4OiAxO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ0x9O1xuXG4gICAgICA+ICogKyAqIHtcbiAgICAgICAgbWFyZ2luOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ0x9IDAgMDtcbiAgICAgIH1cbiAgICBgfVxuICAgIGRhdGEtdGVzdGlkPVwiYXBwbGljYXRpb24tbG9hZGVyXCJcbiAgPlxuICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgIHtwcm9wcy5zaG93TG9nbyA9PT0gdHJ1ZSA/IChcbiAgICAgIDxpbWcgYWx0PVwiY29tbWVyY2V0b29scyBsb2dvXCIgc3JjPXtDVExvZ29TVkd9IC8+XG4gICAgKSA6IG51bGx9XG4gIDwvZGl2PlxuKTtcbkFwcGxpY2F0aW9uTG9hZGVyLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uTG9hZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25Mb2FkZXI7XG4iXX0= */"),
525
- "data-testid": "application-loader",
526
- children: [jsxRuntime.jsx(LoadingSpinner__default["default"], {}), props.showLogo === true ? jsxRuntime.jsx("img", {
527
- alt: "commercetools logo",
528
- src: CTLogoSVG__default["default"]
529
- }) : null]
530
- });
531
- ApplicationLoader.displayName = 'ApplicationLoader';
532
-
533
- const getBrowserHistory = () => history__default["default"];
534
- const getBrowserLocale = win => {
535
- const browserLocale = win && win.navigator && win.navigator.language;
536
- return l10n.getSupportedLocale(browserLocale);
537
- };
538
-
539
- function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
540
- const Passthrough = _ref2 => {
541
- let children = _ref2.children;
542
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
543
- children: children
544
- });
545
- };
546
- const LazyApplicationShellSplitter = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./application-shell-splitter-e87a060f.cjs.dev.js' /* webpackChunkName: "application-shell-splitter" */); })
547
- // When `@commercetools/nimbus` is not installed, the mc-scripts bundler
548
- // fallback stubs it to an empty module so the build succeeds — but the
549
- // splitter's Nimbus bindings are then `undefined`. `hasNimbus` reflects that;
550
- // render a passthrough so no Nimbus code path is mounted.
551
- .then(mod => mod.hasNimbus ? {
552
- default: mod.default
553
- } : {
554
- default: Passthrough
555
- })
556
- // Belt-and-suspenders: if the chunk fails to load outright, still degrade.
557
- .catch(() => ({
558
- default: Passthrough
559
- })));
560
- var _ref$1 = process.env.NODE_ENV === "production" ? {
561
- name: "vbyc59",
562
- styles: "position:fixed;bottom:0;left:0;right:0;z-index:10001"
563
- } : {
564
- name: "1xndrls-ApplicationShellSplitterWrapper",
565
- styles: "position:fixed;bottom:0;left:0;right:0;z-index:10001;label:ApplicationShellSplitterWrapper;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLXNwbGl0dGVyLmFzeW5jLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRGdCIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLXNwbGl0dGVyLmFzeW5jLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUmVhY3ROb2RlLCBsYXp5LCBTdXNwZW5zZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IHVzZUhpc3RvcnkgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IE1DX01BSU5fQ09OVEFJTkVSX1BPUlRBTF9JRCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5cbmNvbnN0IFBhc3N0aHJvdWdoID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pID0+IDw+e2NoaWxkcmVufTwvPjtcblxuY29uc3QgTGF6eUFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciA9IGxhenkoKCkgPT5cbiAgaW1wb3J0KFxuICAgICcuL2FwcGxpY2F0aW9uLXNoZWxsLXNwbGl0dGVyJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImFwcGxpY2F0aW9uLXNoZWxsLXNwbGl0dGVyXCIgKi9cbiAgKVxuICAgIC8vIFdoZW4gYEBjb21tZXJjZXRvb2xzL25pbWJ1c2AgaXMgbm90IGluc3RhbGxlZCwgdGhlIG1jLXNjcmlwdHMgYnVuZGxlclxuICAgIC8vIGZhbGxiYWNrIHN0dWJzIGl0IHRvIGFuIGVtcHR5IG1vZHVsZSBzbyB0aGUgYnVpbGQgc3VjY2VlZHMg4oCUIGJ1dCB0aGVcbiAgICAvLyBzcGxpdHRlcidzIE5pbWJ1cyBiaW5kaW5ncyBhcmUgdGhlbiBgdW5kZWZpbmVkYC4gYGhhc05pbWJ1c2AgcmVmbGVjdHMgdGhhdDtcbiAgICAvLyByZW5kZXIgYSBwYXNzdGhyb3VnaCBzbyBubyBOaW1idXMgY29kZSBwYXRoIGlzIG1vdW50ZWQuXG4gICAgLnRoZW4oKG1vZCkgPT5cbiAgICAgIG1vZC5oYXNOaW1idXMgPyB7IGRlZmF1bHQ6IG1vZC5kZWZhdWx0IH0gOiB7IGRlZmF1bHQ6IFBhc3N0aHJvdWdoIH1cbiAgICApXG4gICAgLy8gQmVsdC1hbmQtc3VzcGVuZGVyczogaWYgdGhlIGNodW5rIGZhaWxzIHRvIGxvYWQgb3V0cmlnaHQsIHN0aWxsIGRlZ3JhZGUuXG4gICAgLmNhdGNoKCgpID0+ICh7IGRlZmF1bHQ6IFBhc3N0aHJvdWdoIH0pKVxuKTtcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbFNwbGl0dGVyV3JhcHBlclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBsb2NhbGU6IHN0cmluZztcbn07XG5cbmNvbnN0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcldyYXBwZXIgPSAoXG4gIHByb3BzOiBUQXBwbGljYXRpb25TaGVsbFNwbGl0dGVyV3JhcHBlclByb3BzXG4pID0+IHtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e3Byb3BzLmNoaWxkcmVufT5cbiAgICAgICAgPExhenlBcHBsaWNhdGlvblNoZWxsU3BsaXR0ZXJcbiAgICAgICAgICBsb2NhbGU9e3Byb3BzLmxvY2FsZX1cbiAgICAgICAgICBuYXZpZ2F0ZT17aGlzdG9yeS5wdXNofVxuICAgICAgICA+XG4gICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICA8L0xhenlBcHBsaWNhdGlvblNoZWxsU3BsaXR0ZXI+XG4gICAgICA8L1N1c3BlbnNlPlxuICAgICAgey8qIFBvcnRhbCB0YXJnZXQgZm9yIFNhdmVUb29sYmFyLiBSZW5kZXJlZCBvdXRzaWRlIFN1c3BlbnNlIHNvIGl0XG4gICAgICAgICAgZXhpc3RzIGluIGJvdGggdGhlIE5pbWJ1cyBhbmQgUGFzc3Rocm91Z2ggcGF0aHMsIGFuZCBvdXRzaWRlXG4gICAgICAgICAgU3BsaXR0ZXIuTWFpbiBzbyBjb250YWluZXItdHlwZTppbmxpbmUtc2l6ZSBkb2VzIG5vdCB0cmFwXG4gICAgICAgICAgcG9zaXRpb246Zml4ZWQuIHotaW5kZXggMTAwMDEgYmVhdHMgdGhlIG1vZGFsIHBvcnRhbHNcbiAgICAgICAgICBjb250YWluZXIgKHotaW5kZXggMTAwMDApLiAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9e01DX01BSU5fQ09OVEFJTkVSX1BPUlRBTF9JRH1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgIHotaW5kZXg6IDEwMDAxO1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcldyYXBwZXI7XG4iXX0= */",
566
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
567
- };
568
- const ApplicationShellSplitterWrapper = props => {
569
- const history = reactRouterDom.useHistory();
570
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
571
- children: [jsxRuntime.jsx(react.Suspense, {
572
- fallback: props.children,
573
- children: jsxRuntime.jsx(LazyApplicationShellSplitter, {
574
- locale: props.locale,
575
- navigate: history.push,
576
- children: props.children
577
- })
578
- }), jsxRuntime.jsx("div", {
579
- id: constants.MC_MAIN_CONTAINER_PORTAL_ID,
580
- css: _ref$1
581
- })]
582
- });
583
- };
584
-
585
- const hideAppLoader = () => {
586
- /**
587
- * NOTE:
588
- * This function is defined in the `index.html` in a script-tag
589
- * by the `html-template.js` in the `mc-scripts`. There are
590
- * alternative ways of acheiving this namely:
591
- * 1. Using custom events and dispatching here
592
- * - Not supported in IE11 and would need a polyfill
593
- * 2. Removing the DOM node here
594
- * - Both `index.html` and this component would have to
595
- * now the div's id/class. If one would change the index.html
596
- * the app would never show (always show the loading screen)
597
- */
598
- if (window.onAppLoaded) window.onAppLoaded();
599
- };
600
- const ConfigureIntlProvider = props => {
601
- react.useEffect(() => {
602
- if (props.locale) {
603
- hideAppLoader();
604
- }
605
- }, [props.locale]);
606
- if (!props.locale) {
607
- return null;
608
- }
609
- return jsxRuntime.jsx(reactIntl.IntlProvider, {
610
- locale: props.locale,
611
- messages: props.messages,
612
- children: props.children
613
- });
614
- };
615
- ConfigureIntlProvider.displayName = 'ConfigureIntlProvider';
616
-
617
- const ErrorApologizer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./error-apologizer-f6793491.cjs.dev.js' /* webpackChunkName: "error-apologizer" */); }));
618
-
619
- var ProjectQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchProject" }, variableDefinitions: [{ kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "projectKey" } }, type: { kind: "NamedType", name: { kind: "Name", value: "String" } }, directives: [] }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "project" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "key" }, value: { kind: "Variable", name: { kind: "Name", value: "projectKey" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "version" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "countries" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "currencies" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "languages" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "initialized" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "expiry" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "daysLeft" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "suspension" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "reason" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "isProductionProject" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "allAppliedPermissions" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedActionRights" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedDataFences" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "InlineFragment", typeCondition: { kind: "NamedType", name: { kind: "Name", value: "StoreDataFence" } }, directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "type" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "__typename" }, arguments: [], directives: [] }] } }] } }, { kind: "Field", name: { kind: "Name", value: "allPermissionsForAllApplications" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "allAppliedPermissions" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedActionRights" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "allAppliedDataFences" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "InlineFragment", typeCondition: { kind: "NamedType", name: { kind: "Name", value: "StoreDataFence" } }, directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "type" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "group" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "__typename" }, arguments: [], directives: [] }] } }] } }] } }, { kind: "Field", name: { kind: "Name", value: "owner" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "sampleDataImportDataset" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "isUserAdminOfCurrentProject" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "productCatalogModel" }, arguments: [], directives: [] }] } }] } }], loc: { start: 0, end: 1035, source: { body: "query FetchProject($projectKey: String) {\n project(key: $projectKey) {\n key\n version\n name\n countries\n currencies\n languages\n initialized\n expiry {\n isActive\n daysLeft\n }\n suspension {\n isActive\n reason\n }\n isProductionProject\n allAppliedPermissions {\n name\n value\n }\n allAppliedActionRights {\n group\n name\n value\n }\n allAppliedDataFences {\n ... on StoreDataFence {\n type\n name\n value\n group\n __typename\n }\n }\n allPermissionsForAllApplications {\n allAppliedPermissions {\n name\n value\n }\n allAppliedActionRights {\n group\n name\n value\n }\n allAppliedDataFences {\n ... on StoreDataFence {\n type\n name\n value\n group\n __typename\n }\n }\n }\n owner {\n id\n name\n }\n sampleDataImportDataset\n isUserAdminOfCurrentProject\n productCatalogModel\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
620
- const FetchProject = props => {
621
- const _useMcQuery = applicationShellConnectors.useMcQuery(ProjectQuery, {
622
- variables: {
623
- projectKey: props.projectKey
624
- },
625
- context: {
626
- target: constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND,
627
- enableSentryErrorReporting: true
628
- },
629
- skip: props.skip === true
630
- }),
631
- loading = _useMcQuery.loading,
632
- data = _useMcQuery.data,
633
- error = _useMcQuery.error;
634
- react.useEffect(() => {
635
- if (!loading && data?.project) {
636
- markOnce(PERFORMANCE_MARKS.HYDRATION_PROJECT);
637
- }
638
- }, [loading, data?.project]);
639
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
640
- children: props.children({
641
- isLoading: loading,
642
- error,
643
- project: data && data.project
644
- })
645
- });
646
- };
647
- FetchProject.displayName = 'FetchProject';
648
-
649
- var LoggedInUserQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchLoggedInUser" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", alias: { kind: "Name", value: "user" }, name: { kind: "Name", value: "me" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "email" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "createdAt" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "gravatarHash" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "firstName" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "lastName" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "language" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "numberFormat" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "timeZone" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "launchdarklyTrackingId" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "launchdarklyTrackingGroup" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "launchdarklyTrackingSubgroup" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "launchdarklyTrackingTeam" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "launchdarklyTrackingCloudEnvironment" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "defaultProjectKey" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "businessRole" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "projects" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "total" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "results" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "suspension" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "expiry" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "isProductionProject" }, arguments: [], directives: [] }] } }] } }, { kind: "Field", name: { kind: "Name", value: "idTokenUserInfo" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "iss" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "sub" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "aud" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "exp" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "iat" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "email" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "additionalClaims" }, arguments: [], directives: [] }] } }] } }] } }], loc: { start: 0, end: 692, source: { body: "query FetchLoggedInUser {\n user: me {\n id\n email\n createdAt\n gravatarHash\n firstName\n lastName\n language\n numberFormat\n timeZone\n launchdarklyTrackingId\n launchdarklyTrackingGroup\n launchdarklyTrackingSubgroup\n launchdarklyTrackingTeam\n launchdarklyTrackingCloudEnvironment\n defaultProjectKey\n businessRole\n projects {\n total\n results {\n name\n key\n suspension {\n isActive\n }\n expiry {\n isActive\n }\n isProductionProject\n }\n }\n idTokenUserInfo {\n iss\n sub\n aud\n exp\n iat\n email\n name\n additionalClaims\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
650
- const FetchUser = props => {
651
- const _useMcQuery = applicationShellConnectors.useMcQuery(LoggedInUserQuery, {
652
- context: {
653
- target: constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND,
654
- enableSentryErrorReporting: true
655
- }
656
- }),
657
- loading = _useMcQuery.loading,
658
- data = _useMcQuery.data,
659
- error = _useMcQuery.error;
660
- react.useEffect(() => {
661
- if (!loading && data?.user) {
662
- markOnce(PERFORMANCE_MARKS.HYDRATION_USER);
663
- }
664
- }, [loading, data?.user]);
665
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
666
- children: props.children({
667
- isLoading: loading,
668
- user: data && data.user,
669
- error
670
- })
671
- });
672
- };
673
- FetchUser.displayName = 'FetchUser';
674
-
675
- const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-59504b51.cjs.dev.js' /* webpackChunkName: "navbar" */); }));
676
-
677
- const PerformanceMark = _ref => {
678
- let mark = _ref.mark;
679
- react.useEffect(() => {
680
- markOnce(mark);
681
- }, [mark]);
682
- return null;
683
- };
684
-
685
- const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-bd7b1263.cjs.dev.js' /* webpackChunkName: "project-container" */); }));
686
-
687
- const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-37258f53.cjs.dev.js' /* webpackChunkName: "redirect-to-logout" */); }));
688
-
689
- const RedirectToProjectCreate = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-project-create-f4f01842.cjs.dev.js' /* webpackChunkName: "redirect-to-project-create" */); }));
690
-
691
- function ownKeys$9(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
692
- function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$9(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$9(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
693
- var AllFeaturesQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "AllFeatures" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "allFeatures" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "reason" }, arguments: [], directives: [] }] } }] } }], loc: { start: 0, end: 72, source: { body: "query AllFeatures {\n allFeatures {\n name\n value\n reason\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } }; // The LaunchDarkly client-side SDK requires a context to either provide a
694
- // `key` (non-anonymous) or be marked as `anonymous: true` (in which case the
695
- // SDK generates a key for it). A context can never satisfy both branches at
696
- // once, so we model this as a union rather than making `key` optional.
697
- // This value is hard-coded here because we want to make sure that the
698
- // app uses our account of LD. The value is meant to be public, so there
699
- // is no need to be concerned about security.
700
- const ldClientSideIdProduction = '5979d95f6040390cd07b5e01';
701
- function getUserContextForLaunchDarklyAdapter(user, projectKey) {
702
- const base = {
703
- kind: 'user',
704
- project: projectKey ?? '',
705
- id: user?.launchdarklyTrackingId ?? '',
706
- team: user?.launchdarklyTrackingTeam ?? [],
707
- group: user?.launchdarklyTrackingGroup ?? '',
708
- subgroup: user?.launchdarklyTrackingSubgroup ?? '',
709
- cloudEnvironment: user?.launchdarklyTrackingCloudEnvironment ?? ''
710
- };
711
- return user?.id ? _objectSpread$9(_objectSpread$9({}, base), {}, {
712
- key: user.id
713
- }) : _objectSpread$9(_objectSpread$9({}, base), {}, {
714
- anonymous: true
715
- });
716
- }
717
- const parseFlags = fetchedFlags => {
718
- var _context;
719
- return _Object$fromEntries__default["default"](_mapInstanceProperty__default["default"](_context = fetchedFlags.allFeatures).call(_context, fetchedFlag => [fetchedFlag.name, {
720
- value: fetchedFlag.value,
721
- reason: fetchedFlag.reason
722
- }]));
723
- };
724
- const getCacheMode = adapterIdentifier => {
725
- if (
726
- // @ts-ignore
727
- typeof window.Cypress !== 'undefined' || adapterIdentifier === types.adapterIdentifiers.http) {
728
- // Temporary workaround: when running in Cypress, do not use lazy mode
729
- // as the flag is not being updated in time during the test run.
730
- return types.cacheModes.eager;
731
- }
732
- return types.cacheModes.lazy;
733
- };
734
- const SetupFlopFlipProvider = props => {
735
- const apolloClient = react$2.useApolloClient();
736
- const enableLongLivedFeatureFlags = applicationShellConnectors.useApplicationContext(context => context.environment.enableLongLivedFeatureFlags);
737
- const flags = react.useMemo(() => _objectSpread$9(_objectSpread$9({}, constants.featureFlags.FLAGS), _flagsInstanceProperty__default["default"](props)), [_flagsInstanceProperty__default["default"](props)]);
738
- react.useMemo(() => {
739
- if (enableLongLivedFeatureFlags) {
740
- combineAdapters.adapter.combine([launchdarklyAdapter.adapter, httpAdapter.adapter]);
741
- } else {
742
- combineAdapters.adapter.combine([launchdarklyAdapter.adapter]);
743
- }
744
- }, [enableLongLivedFeatureFlags]);
745
- const defaultFlags = react.useMemo(() => _objectSpread$9(_objectSpread$9({}, constants.featureFlags.DEFAULT_FLAGS), props.defaultFlags), [props.defaultFlags]);
746
- const adapterArgs = react.useMemo(() => ({
747
- user: {
748
- key: props.user?.id
749
- },
750
- launchdarkly: {
751
- cacheIdentifier: types.cacheIdentifiers.local,
752
- cacheMode: getCacheMode(types.adapterIdentifiers.launchdarkly),
753
- sdk: {
754
- // Allow to overwrite the client ID, passed via the `additionalEnv` properties
755
- // of the application config.
756
- // This is mostly useful for internal usage on our staging environments.
757
- clientSideId: props.ldClientSideId ?? ldClientSideIdProduction
758
- // `sendEventsOnlyForVariation` was removed in @launchdarkly/js-client-sdk v4
759
- // (formerly launchdarkly-js-client-sdk v3). It is no longer needed: as of v4,
760
- // `allFlags` no longer sends analytics events by default, which is exactly the
761
- // behavior this option used to opt into.
762
- },
763
- flags,
764
- context: getUserContextForLaunchDarklyAdapter(props.user, props.projectKey)
765
- },
766
- http: {
767
- // polling interval set to 15 minutes
768
- pollingIntervalMs: 1000 * 60 * 15,
769
- cacheIdentifier: types.cacheIdentifiers.local,
770
- cacheMode: getCacheMode(types.adapterIdentifiers.http),
771
- user: {
772
- key: props.user?.id
773
- },
774
- execute: async adapterArgs => {
775
- const response = await apolloClient.query({
776
- query: AllFeaturesQuery,
777
- errorPolicy: 'ignore',
778
- fetchPolicy: 'network-only',
779
- context: {
780
- target: constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND,
781
- projectKey: adapterArgs.user?.project
782
- }
783
- });
784
- return parseFlags(response.data);
785
- }
786
- }
787
- }), [apolloClient, flags, props.ldClientSideId, props.projectKey, props.user]);
788
-
789
- /**
790
- * The `<ApplicationShell />` tests itself. When it does so it can not setup and use
791
- * the `launchdarkly-adapter` and `http-adapter`. As a result the `process.env`
792
- * is evaluated and a test provider is rendered for feature flags.
793
- *
794
- * The `process.env` check also ensures that this block is excluded from production
795
- * bundles.
796
- */
797
- if (process.env.NODE_ENV === 'test') {
798
- const _require = require('@flopflip/react-broadcast'),
799
- TestProviderFlopFlip = _require.TestProviderFlopFlip;
800
- return jsxRuntime.jsx(TestProviderFlopFlip, {
801
- flags: defaultFlags,
802
- children: props.children
803
- });
804
- }
805
- return jsxRuntime.jsx(reactBroadcast.ConfigureFlopFlip, {
806
- adapter: combineAdapters.adapter,
807
- adapterArgs: adapterArgs,
808
- defaultFlags: defaultFlags,
809
- shouldDeferAdapterConfiguration: typeof props.shouldDeferAdapterConfiguration === 'boolean' ? props.shouldDeferAdapterConfiguration : !props.user,
810
- children: props.children
811
- });
812
- };
813
- SetupFlopFlipProvider.displayName = 'SetupFlopFlipProvider';
814
-
815
- const ThemeSwitcher = () => {
816
- const theme = 'default';
817
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
818
- children: jsxRuntime.jsx(designSystem.ThemeProvider, {
819
- theme: theme,
820
- themeOverrides: applicationComponents.themesOverrides[theme]
821
- })
822
- });
823
- };
824
-
825
- function ownKeys$8(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
826
- function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$8(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$8(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
827
- function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
828
- const getHasUnauthorizedError = graphQLErrors => _findInstanceProperty__default["default"](graphQLErrors).call(graphQLErrors, gqlError => gqlError.extensions && gqlError.extensions.code && gqlError.extensions.code === 'UNAUTHENTICATED');
829
- const getHasUserBeenDeletedError = graphQLErrors => _findInstanceProperty__default["default"](graphQLErrors).call(graphQLErrors, gqlError => {
830
- var _context;
831
- return gqlError.message &&
832
- // NOTE: The CTP API does not provide an error code in this case.
833
- _includesInstanceProperty__default["default"](_context = gqlError.message).call(_context, 'was not found.');
834
- });
835
- const MainContainer = /*#__PURE__*/_styled__default["default"]("main", process.env.NODE_ENV === "production" ? {
836
- target: "esrtekc0"
837
- } : {
838
- target: "esrtekc0",
839
- label: "MainContainer"
840
- })(process.env.NODE_ENV === "production" ? {
841
- name: "evthls",
842
- styles: "grid-column:2/3;grid-row:3/4;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative"
843
- } : {
844
- name: "evthls",
845
- styles: "grid-column:2/3;grid-row:3/4;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRFd0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSwgUEVSRk9STUFOQ0VfTUFSS1MgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJy4uL2FwcC1iYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci5hc3luYyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQZXJmb3JtYW5jZU1hcmsgZnJvbSAnLi4vcGVyZm9ybWFuY2UtbWFyayc7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cblxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBjdCBzdGFmZiwgYW5kIGlmIHNvIGdldCBsYW5ndWFnZSBzZWxlY3RlZCB2aWEgc3RhZmYgYmFyIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICBjb25zdCBzdGFmZkJhckxhbmd1YWdlID1cbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnY29tbWVyY2V0b29scycgfHxcbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnbWFpbG9zYXVyJ1xuICAgICAgICAgICAgPyBzZWxlY3RVc2VyTGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVkVXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXSB8IHVuZGVmaW5lZCA9IHVzZXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgLy8gc2V0IHRoZSBzdGFmZiBiYXIgbGFuZ3VhZ2UgaWYgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBsYW5ndWFnZTogc3RhZmZCYXJMYW5ndWFnZSA/PyB1c2VyLmxhbmd1YWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17bm9ybWFsaXplZFVzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHsvKiBNYXJrZWQgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIGBDb25maWd1cmVJbnRsUHJvdmlkZXJgXG4gICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGF0IGNvbXBvbmVudCBhbHNvIHJlbmRlcnMgb24gdGhlXG4gICAgICAgICAgICAgICAgICB1bmF1dGhlbnRpY2F0ZWQsIEN1c3RvbSBWaWV3IGFuZCBlcnJvciBzdXJmYWNlcy4gKi99XG4gICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLklOVExfUkVBRFl9IC8+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgbGRDbGllbnRTaWRlSWQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQubGRDbGllbnRTaWRlSWR9XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBsb2NhbGU9e2xvY2FsZSA/PyAnZW4nfT5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogVGhlIHNwbGl0dGVyJ3MgU3VzcGVuc2UgZmFsbGJhY2sgcmVuZGVycyB0aGVzZSBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIHNvIHRoaXMgbWFyayBpcyB3cml0dGVuIG9uIHRoZSBmYWxsYmFjayBwYXNzIGFuZFxuICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBsYXp5IGNodW5rIHRvIGRvd25sb2FkLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrPXtQRVJGT1JNQU5DRV9NQVJLUy5TSEVMTF9DSFJPTUVfTU9VTlRFRH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXtub3JtYWxpemVkVXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFib3ZlLXRvcC1uYXZpZ2F0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46ICcyLzMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyLzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZXJmb3JtYW5jZU1hcmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLkNPTlRFTlRfUkVOREVSRUR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvbldoZW5FeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e3RydWV9IHBhdGg9XCIvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub3JtYWxpemVkVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17ZmFsc2V9IHBhdGg9XCIvOnByb2plY3RLZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZDtcbiJdfQ== */",
846
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
847
- });
848
-
849
- /**
850
- * This component is rendered whenever the user is considered "authenticated"
851
- * and contains the "restricted" application part.
852
- */
853
- var _ref = process.env.NODE_ENV === "production" ? {
854
- name: "tlwzvn",
855
- styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;}"
856
- } : {
857
- name: "1y4p4ln-ApplicationShellAuthenticated",
858
- styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;};label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1Wc0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSwgUEVSRk9STUFOQ0VfTUFSS1MgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJy4uL2FwcC1iYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci5hc3luYyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQZXJmb3JtYW5jZU1hcmsgZnJvbSAnLi4vcGVyZm9ybWFuY2UtbWFyayc7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cblxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBjdCBzdGFmZiwgYW5kIGlmIHNvIGdldCBsYW5ndWFnZSBzZWxlY3RlZCB2aWEgc3RhZmYgYmFyIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICBjb25zdCBzdGFmZkJhckxhbmd1YWdlID1cbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnY29tbWVyY2V0b29scycgfHxcbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnbWFpbG9zYXVyJ1xuICAgICAgICAgICAgPyBzZWxlY3RVc2VyTGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVkVXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXSB8IHVuZGVmaW5lZCA9IHVzZXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgLy8gc2V0IHRoZSBzdGFmZiBiYXIgbGFuZ3VhZ2UgaWYgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBsYW5ndWFnZTogc3RhZmZCYXJMYW5ndWFnZSA/PyB1c2VyLmxhbmd1YWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17bm9ybWFsaXplZFVzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHsvKiBNYXJrZWQgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIGBDb25maWd1cmVJbnRsUHJvdmlkZXJgXG4gICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGF0IGNvbXBvbmVudCBhbHNvIHJlbmRlcnMgb24gdGhlXG4gICAgICAgICAgICAgICAgICB1bmF1dGhlbnRpY2F0ZWQsIEN1c3RvbSBWaWV3IGFuZCBlcnJvciBzdXJmYWNlcy4gKi99XG4gICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLklOVExfUkVBRFl9IC8+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgbGRDbGllbnRTaWRlSWQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQubGRDbGllbnRTaWRlSWR9XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBsb2NhbGU9e2xvY2FsZSA/PyAnZW4nfT5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogVGhlIHNwbGl0dGVyJ3MgU3VzcGVuc2UgZmFsbGJhY2sgcmVuZGVycyB0aGVzZSBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIHNvIHRoaXMgbWFyayBpcyB3cml0dGVuIG9uIHRoZSBmYWxsYmFjayBwYXNzIGFuZFxuICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBsYXp5IGNodW5rIHRvIGRvd25sb2FkLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrPXtQRVJGT1JNQU5DRV9NQVJLUy5TSEVMTF9DSFJPTUVfTU9VTlRFRH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXtub3JtYWxpemVkVXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFib3ZlLXRvcC1uYXZpZ2F0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46ICcyLzMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyLzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZXJmb3JtYW5jZU1hcmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLkNPTlRFTlRfUkVOREVSRUR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvbldoZW5FeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e3RydWV9IHBhdGg9XCIvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub3JtYWxpemVkVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17ZmFsc2V9IHBhdGg9XCIvOnByb2plY3RLZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZDtcbiJdfQ== */",
859
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
860
- };
861
- var _ref2 = process.env.NODE_ENV === "production" ? {
862
- name: "lzrvov",
863
- styles: "grid-column:1/2;grid-row:2/4;overflow:hidden"
864
- } : {
865
- name: "b768-ApplicationShellAuthenticated",
866
- styles: "grid-column:1/2;grid-row:2/4;overflow:hidden;label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlSa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSwgUEVSRk9STUFOQ0VfTUFSS1MgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJy4uL2FwcC1iYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci5hc3luYyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQZXJmb3JtYW5jZU1hcmsgZnJvbSAnLi4vcGVyZm9ybWFuY2UtbWFyayc7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cblxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBjdCBzdGFmZiwgYW5kIGlmIHNvIGdldCBsYW5ndWFnZSBzZWxlY3RlZCB2aWEgc3RhZmYgYmFyIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICBjb25zdCBzdGFmZkJhckxhbmd1YWdlID1cbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnY29tbWVyY2V0b29scycgfHxcbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnbWFpbG9zYXVyJ1xuICAgICAgICAgICAgPyBzZWxlY3RVc2VyTGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVkVXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXSB8IHVuZGVmaW5lZCA9IHVzZXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgLy8gc2V0IHRoZSBzdGFmZiBiYXIgbGFuZ3VhZ2UgaWYgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBsYW5ndWFnZTogc3RhZmZCYXJMYW5ndWFnZSA/PyB1c2VyLmxhbmd1YWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17bm9ybWFsaXplZFVzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHsvKiBNYXJrZWQgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIGBDb25maWd1cmVJbnRsUHJvdmlkZXJgXG4gICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGF0IGNvbXBvbmVudCBhbHNvIHJlbmRlcnMgb24gdGhlXG4gICAgICAgICAgICAgICAgICB1bmF1dGhlbnRpY2F0ZWQsIEN1c3RvbSBWaWV3IGFuZCBlcnJvciBzdXJmYWNlcy4gKi99XG4gICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLklOVExfUkVBRFl9IC8+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgbGRDbGllbnRTaWRlSWQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQubGRDbGllbnRTaWRlSWR9XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBsb2NhbGU9e2xvY2FsZSA/PyAnZW4nfT5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogVGhlIHNwbGl0dGVyJ3MgU3VzcGVuc2UgZmFsbGJhY2sgcmVuZGVycyB0aGVzZSBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIHNvIHRoaXMgbWFyayBpcyB3cml0dGVuIG9uIHRoZSBmYWxsYmFjayBwYXNzIGFuZFxuICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBsYXp5IGNodW5rIHRvIGRvd25sb2FkLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrPXtQRVJGT1JNQU5DRV9NQVJLUy5TSEVMTF9DSFJPTUVfTU9VTlRFRH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXtub3JtYWxpemVkVXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFib3ZlLXRvcC1uYXZpZ2F0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46ICcyLzMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyLzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZXJmb3JtYW5jZU1hcmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLkNPTlRFTlRfUkVOREVSRUR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvbldoZW5FeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e3RydWV9IHBhdGg9XCIvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub3JtYWxpemVkVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17ZmFsc2V9IHBhdGg9XCIvOnByb2plY3RLZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZDtcbiJdfQ== */",
867
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
868
- };
869
- var _ref3 = process.env.NODE_ENV === "production" ? {
870
- name: "tjbz3t",
871
- styles: "grid-row:'2/3';grid-column:'2/3'"
872
- } : {
873
- name: "arpkii-ApplicationShellAuthenticated",
874
- styles: "grid-row:'2/3';grid-column:'2/3';label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFRa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSwgUEVSRk9STUFOQ0VfTUFSS1MgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJy4uL2FwcC1iYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci5hc3luYyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQZXJmb3JtYW5jZU1hcmsgZnJvbSAnLi4vcGVyZm9ybWFuY2UtbWFyayc7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cblxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBjdCBzdGFmZiwgYW5kIGlmIHNvIGdldCBsYW5ndWFnZSBzZWxlY3RlZCB2aWEgc3RhZmYgYmFyIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICBjb25zdCBzdGFmZkJhckxhbmd1YWdlID1cbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnY29tbWVyY2V0b29scycgfHxcbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnbWFpbG9zYXVyJ1xuICAgICAgICAgICAgPyBzZWxlY3RVc2VyTGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVkVXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXSB8IHVuZGVmaW5lZCA9IHVzZXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgLy8gc2V0IHRoZSBzdGFmZiBiYXIgbGFuZ3VhZ2UgaWYgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBsYW5ndWFnZTogc3RhZmZCYXJMYW5ndWFnZSA/PyB1c2VyLmxhbmd1YWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17bm9ybWFsaXplZFVzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHsvKiBNYXJrZWQgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIGBDb25maWd1cmVJbnRsUHJvdmlkZXJgXG4gICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGF0IGNvbXBvbmVudCBhbHNvIHJlbmRlcnMgb24gdGhlXG4gICAgICAgICAgICAgICAgICB1bmF1dGhlbnRpY2F0ZWQsIEN1c3RvbSBWaWV3IGFuZCBlcnJvciBzdXJmYWNlcy4gKi99XG4gICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLklOVExfUkVBRFl9IC8+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgbGRDbGllbnRTaWRlSWQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQubGRDbGllbnRTaWRlSWR9XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBsb2NhbGU9e2xvY2FsZSA/PyAnZW4nfT5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogVGhlIHNwbGl0dGVyJ3MgU3VzcGVuc2UgZmFsbGJhY2sgcmVuZGVycyB0aGVzZSBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIHNvIHRoaXMgbWFyayBpcyB3cml0dGVuIG9uIHRoZSBmYWxsYmFjayBwYXNzIGFuZFxuICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBsYXp5IGNodW5rIHRvIGRvd25sb2FkLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrPXtQRVJGT1JNQU5DRV9NQVJLUy5TSEVMTF9DSFJPTUVfTU9VTlRFRH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXtub3JtYWxpemVkVXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFib3ZlLXRvcC1uYXZpZ2F0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46ICcyLzMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyLzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZXJmb3JtYW5jZU1hcmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLkNPTlRFTlRfUkVOREVSRUR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvbldoZW5FeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e3RydWV9IHBhdGg9XCIvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub3JtYWxpemVkVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17ZmFsc2V9IHBhdGg9XCIvOnByb2plY3RLZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZDtcbiJdfQ== */",
875
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
876
- };
877
- var _ref4 = process.env.NODE_ENV === "production" ? {
878
- name: "8bdwu0",
879
- styles: "grid-row:1;grid-column:1/3"
880
- } : {
881
- name: "u4fwut-ApplicationShellAuthenticated",
882
- styles: "grid-row:1;grid-column:1/3;label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJQa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSwgUEVSRk9STUFOQ0VfTUFSS1MgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJy4uL2FwcC1iYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci5hc3luYyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQZXJmb3JtYW5jZU1hcmsgZnJvbSAnLi4vcGVyZm9ybWFuY2UtbWFyayc7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cblxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBjdCBzdGFmZiwgYW5kIGlmIHNvIGdldCBsYW5ndWFnZSBzZWxlY3RlZCB2aWEgc3RhZmYgYmFyIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICBjb25zdCBzdGFmZkJhckxhbmd1YWdlID1cbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnY29tbWVyY2V0b29scycgfHxcbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnbWFpbG9zYXVyJ1xuICAgICAgICAgICAgPyBzZWxlY3RVc2VyTGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVkVXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXSB8IHVuZGVmaW5lZCA9IHVzZXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgLy8gc2V0IHRoZSBzdGFmZiBiYXIgbGFuZ3VhZ2UgaWYgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBsYW5ndWFnZTogc3RhZmZCYXJMYW5ndWFnZSA/PyB1c2VyLmxhbmd1YWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17bm9ybWFsaXplZFVzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHsvKiBNYXJrZWQgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIGBDb25maWd1cmVJbnRsUHJvdmlkZXJgXG4gICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGF0IGNvbXBvbmVudCBhbHNvIHJlbmRlcnMgb24gdGhlXG4gICAgICAgICAgICAgICAgICB1bmF1dGhlbnRpY2F0ZWQsIEN1c3RvbSBWaWV3IGFuZCBlcnJvciBzdXJmYWNlcy4gKi99XG4gICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLklOVExfUkVBRFl9IC8+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgbGRDbGllbnRTaWRlSWQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQubGRDbGllbnRTaWRlSWR9XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBsb2NhbGU9e2xvY2FsZSA/PyAnZW4nfT5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogVGhlIHNwbGl0dGVyJ3MgU3VzcGVuc2UgZmFsbGJhY2sgcmVuZGVycyB0aGVzZSBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIHNvIHRoaXMgbWFyayBpcyB3cml0dGVuIG9uIHRoZSBmYWxsYmFjayBwYXNzIGFuZFxuICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBsYXp5IGNodW5rIHRvIGRvd25sb2FkLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrPXtQRVJGT1JNQU5DRV9NQVJLUy5TSEVMTF9DSFJPTUVfTU9VTlRFRH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXtub3JtYWxpemVkVXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFib3ZlLXRvcC1uYXZpZ2F0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46ICcyLzMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyLzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZXJmb3JtYW5jZU1hcmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLkNPTlRFTlRfUkVOREVSRUR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvbldoZW5FeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e3RydWV9IHBhdGg9XCIvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub3JtYWxpemVkVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17ZmFsc2V9IHBhdGg9XCIvOnByb2plY3RLZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZDtcbiJdfQ== */",
883
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
884
- };
885
- const ApplicationShellAuthenticated = props => {
886
- const applicationEnvironment = applicationShellConnectors.useApplicationContext(context => context.environment);
887
- // TODO: using this hook will subscribe the component to route updates.
888
- // This is currently useful for detecting a change in the project key
889
- // from URL ("/" --> "/:projectKey").
890
- // However, every route change will trigger a re-render. This is probably
891
- // ok-ish but we might want to look into a more performant solution.
892
- const location = reactRouterDom.useLocation();
893
- const notificationsGlobalRef = react.useRef(null);
894
- const notificationsPageRef = react.useRef(null);
895
- const layoutRefs = react.useRef({
896
- notificationsGlobalRef,
897
- notificationsPageRef
898
- });
899
- return jsxRuntime.jsx(FetchUser, {
900
- children: _ref5 => {
901
- let isLoadingUser = _ref5.isLoading,
902
- user = _ref5.user,
903
- error = _ref5.error;
904
- if (error) {
905
- // In case there is an unauthorized error, we redirect to the login page
906
- if (error.graphQLErrors && _Array$isArray__default["default"](error.graphQLErrors)) {
907
- const hasUnauthorizedError = getHasUnauthorizedError(error.graphQLErrors);
908
- const hasUserBeenDeletedError = getHasUserBeenDeletedError(error.graphQLErrors);
909
- if (hasUnauthorizedError || hasUserBeenDeletedError) {
910
- let logoutReason;
911
- if (hasUnauthorizedError) logoutReason = constants.LOGOUT_REASONS.UNAUTHORIZED;else if (hasUserBeenDeletedError) logoutReason = constants.LOGOUT_REASONS.DELETED;
912
- return jsxRuntime.jsx(RedirectToLogout, {
913
- reason: logoutReason
914
- });
915
- }
916
- }
917
- // Since we do not know the locale of the user, we pick it from the
918
- // user's browser to attempt to match the language for the correct translations.
919
-
920
- const userLocale = getBrowserLocale(window);
921
- return jsxRuntime.jsx(i18n.AsyncLocaleData, {
922
- locale: userLocale,
923
- applicationMessages: props.applicationMessages,
924
- children: _ref6 => {
925
- let locale = _ref6.locale,
926
- messages = _ref6.messages;
927
- sentry.reportErrorToSentry(error, {});
928
- return jsxRuntime.jsx(ConfigureIntlProvider, {
929
- locale: locale,
930
- messages: messages,
931
- children: jsxRuntime.jsx(ErrorApologizer, {})
932
- });
933
- }
934
- });
935
- }
936
- const projectKeyFromUrl = applicationShellConnectors.selectProjectKeyFromUrl(location.pathname);
937
-
938
- // Check if user is ct staff, and if so get language selected via staff bar from local storage
939
- const staffBarLanguage = user?.launchdarklyTrackingGroup === 'commercetools' || user?.launchdarklyTrackingGroup === 'mailosaur' ? applicationShellConnectors.selectUserLanguageFromStorage() : undefined;
940
- const normalizedUser = user ? _objectSpread$8(_objectSpread$8({}, user), {}, {
941
- // set the staff bar language if applicable
942
- language: staffBarLanguage ?? user.language
943
- }) : undefined;
944
- return jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
945
- user: normalizedUser,
946
- environment: applicationEnvironment,
947
- children: jsxRuntime.jsx(i18n.AsyncLocaleData, {
948
- locale: normalizedUser?.language,
949
- applicationMessages: props.applicationMessages,
950
- children: _ref7 => {
951
- let isLoadingLocaleData = _ref7.isLoading,
952
- locale = _ref7.locale,
953
- messages = _ref7.messages;
954
- return jsxRuntime.jsxs(ConfigureIntlProvider
955
- // We do not want to pass the language as long as the locale data
956
- // is not loaded.
957
- , _objectSpread$8(_objectSpread$8({}, isLoadingLocaleData ? {} : {
958
- locale,
959
- messages
960
- }), {}, {
961
- children: [jsxRuntime.jsx(PerformanceMark, {
962
- mark: PERFORMANCE_MARKS.INTL_READY
963
- }), jsxRuntime.jsx(SetupFlopFlipProvider, {
964
- user: normalizedUser,
965
- projectKey: projectKeyFromUrl,
966
- ldClientSideId: applicationEnvironment.ldClientSideId,
967
- flags: props.featureFlags,
968
- defaultFlags: props.defaultFeatureFlags,
969
- children: jsxRuntime.jsxs(ApplicationShellSplitterWrapper, {
970
- locale: locale ?? 'en',
971
- children: [jsxRuntime.jsx(PerformanceMark, {
972
- mark: PERFORMANCE_MARKS.SHELL_CHROME_MOUNTED
973
- }), jsxRuntime.jsx(ThemeSwitcher, {}), jsxRuntime.jsx(RequestsInFlightLoader, {}), jsxRuntime.jsx(sentry.SentryUserTracker, {
974
- user: normalizedUser
975
- }), jsxRuntime.jsxs("div", {
976
- css: /*#__PURE__*/react$1.css("height:100vh;display:grid;grid-template-rows:auto ", oidc.DIMENSIONS.header, " 1fr;grid-template-columns:min-content 1fr;" + (process.env.NODE_ENV === "production" ? "" : ";label:ApplicationShellAuthenticated;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdQZ0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSwgUEVSRk9STUFOQ0VfTUFSS1MgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJy4uL2FwcC1iYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci9hcHBsaWNhdGlvbi1zaGVsbC1zcGxpdHRlci5hc3luYyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQZXJmb3JtYW5jZU1hcmsgZnJvbSAnLi4vcGVyZm9ybWFuY2UtbWFyayc7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cblxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBjdCBzdGFmZiwgYW5kIGlmIHNvIGdldCBsYW5ndWFnZSBzZWxlY3RlZCB2aWEgc3RhZmYgYmFyIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICBjb25zdCBzdGFmZkJhckxhbmd1YWdlID1cbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnY29tbWVyY2V0b29scycgfHxcbiAgICAgICAgICB1c2VyPy5sYXVuY2hkYXJrbHlUcmFja2luZ0dyb3VwID09PSAnbWFpbG9zYXVyJ1xuICAgICAgICAgICAgPyBzZWxlY3RVc2VyTGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVkVXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXSB8IHVuZGVmaW5lZCA9IHVzZXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgLy8gc2V0IHRoZSBzdGFmZiBiYXIgbGFuZ3VhZ2UgaWYgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBsYW5ndWFnZTogc3RhZmZCYXJMYW5ndWFnZSA/PyB1c2VyLmxhbmd1YWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17bm9ybWFsaXplZFVzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHsvKiBNYXJrZWQgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIGBDb25maWd1cmVJbnRsUHJvdmlkZXJgXG4gICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGF0IGNvbXBvbmVudCBhbHNvIHJlbmRlcnMgb24gdGhlXG4gICAgICAgICAgICAgICAgICB1bmF1dGhlbnRpY2F0ZWQsIEN1c3RvbSBWaWV3IGFuZCBlcnJvciBzdXJmYWNlcy4gKi99XG4gICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLklOVExfUkVBRFl9IC8+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgbGRDbGllbnRTaWRlSWQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQubGRDbGllbnRTaWRlSWR9XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uU2hlbGxTcGxpdHRlciBsb2NhbGU9e2xvY2FsZSA/PyAnZW4nfT5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogVGhlIHNwbGl0dGVyJ3MgU3VzcGVuc2UgZmFsbGJhY2sgcmVuZGVycyB0aGVzZSBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIHNvIHRoaXMgbWFyayBpcyB3cml0dGVuIG9uIHRoZSBmYWxsYmFjayBwYXNzIGFuZFxuICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBsYXp5IGNodW5rIHRvIGRvd25sb2FkLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VNYXJrXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrPXtQRVJGT1JNQU5DRV9NQVJLUy5TSEVMTF9DSFJPTUVfTU9VTlRFRH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXtub3JtYWxpemVkVXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFib3ZlLXRvcC1uYXZpZ2F0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46ICcyLzMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyLzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZXJmb3JtYW5jZU1hcmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms9e1BFUkZPUk1BTkNFX01BUktTLkNPTlRFTlRfUkVOREVSRUR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvbldoZW5FeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e3RydWV9IHBhdGg9XCIvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub3JtYWxpemVkVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17ZmFsc2V9IHBhdGg9XCIvOnByb2plY3RLZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17bm9ybWFsaXplZFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uU2hlbGxTcGxpdHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZDtcbiJdfQ== */"),
977
- children: [jsxRuntime.jsxs("div", {
978
- ref: notificationsGlobalRef,
979
- role: "region",
980
- "aria-live": "polite",
981
- css: _ref4,
982
- children: [jsxRuntime.jsx("div", {
983
- id: "above-top-navigation"
984
- }), jsxRuntime.jsx(reactNotifications.NotificationsList, {
985
- domain: constants.DOMAINS.GLOBAL
986
- })]
987
- }), jsxRuntime.jsx("header", {
988
- css: _ref3,
989
- children: jsxRuntime.jsx(AppBar, {
990
- user: normalizedUser,
991
- projectKeyFromUrl: projectKeyFromUrl
992
- })
993
- }), jsxRuntime.jsx("aside", {
994
- css: _ref2,
995
- children: (() => {
996
- // The <NavBar> should only be rendered within a project
997
- // context, therefore when there is a `projectKey`.
998
- // If there is no `projectKey` in the URL (e.g. `/account`
999
- // routes), we don't render it.
1000
- // NOTE: we also "cache" the `projectKey` in localStorage
1001
- // but this should only be used to "re-hydrate" the URL
1002
- // location (e.g when you go to `/`, there should be a
1003
- // redirect to `/:projectKey`). Therefore, we should not
1004
- // rely on the value in localStorage to determine which
1005
- // `projectKey` is currently used.
1006
- if (!projectKeyFromUrl) return null;
1007
- return jsxRuntime.jsx(FetchProject, {
1008
- projectKey: projectKeyFromUrl,
1009
- children: _ref8 => {
1010
- let isLoadingProject = _ref8.isLoading,
1011
- project = _ref8.project;
1012
- const isLoading = isLoadingUser || isLoadingLocaleData || isLoadingProject || !locale || !project;
1013
- return jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
1014
- user: normalizedUser,
1015
- environment: applicationEnvironment
1016
- // NOTE: do not pass the `project` into the application context.
1017
- // The permissions for the Navbar are resolved separately, within
1018
- // a different React context.
1019
- ,
1020
- children: jsxRuntime.jsx(Navbar, {
1021
- applicationLocale: locale,
1022
- projectKey: projectKeyFromUrl,
1023
- project: project,
1024
- environment: applicationEnvironment,
1025
- onMenuItemClick: props.onMenuItemClick,
1026
- isLoading: isLoading
1027
- })
1028
- });
1029
- }
1030
- });
1031
- })()
1032
- }), isLoadingUser || isLoadingLocaleData ? jsxRuntime.jsx(MainContainer, {
1033
- role: "main",
1034
- children: jsxRuntime.jsx(ApplicationLoader, {})
1035
- }) : jsxRuntime.jsxs(MainContainer, {
1036
- role: "main",
1037
- children: [jsxRuntime.jsx(PerformanceMark, {
1038
- mark: PERFORMANCE_MARKS.CONTENT_RENDERED
1039
- }), jsxRuntime.jsx("div", {
1040
- ref: notificationsPageRef,
1041
- children: jsxRuntime.jsx(reactNotifications.NotificationsList, {
1042
- domain: constants.DOMAINS.PAGE
1043
- })
1044
- }), jsxRuntime.jsx(reactNotifications.NotificationsList, {
1045
- domain: constants.DOMAINS.SIDE
1046
- }), jsxRuntime.jsxs("div", {
1047
- css: _ref,
1048
- children: [jsxRuntime.jsx(applicationComponents.PortalsContainer
1049
- // @ts-ignore
1050
- , {
1051
- ref: layoutRefs,
1052
- offsetTop: oidc.DIMENSIONS.header,
1053
- offsetLeft: projectKeyFromUrl ? oidc.NAVBAR.widthLeftNavigation : '0px',
1054
- offsetLeftOnExpandedMenu: projectKeyFromUrl ? oidc.NAVBAR.widthLeftNavigationWhenExpanded : '0px'
1055
- }), jsxRuntime.jsxs(reactRouterDom.Switch, {
1056
- children: [jsxRuntime.jsx(reactRouterDom.Route, {
1057
- path: "/profile",
1058
- render: () => jsxRuntime.jsx(reactRouterDom.Redirect, {
1059
- to: "/account/profile"
1060
- })
1061
- }), jsxRuntime.jsx(reactRouterDom.Route, {
1062
- path: "/account",
1063
- children:
1064
- /**
1065
- * In case the AppShell uses the `render` function, we assume it's one of two cases:
1066
- * 1. The application does not use `children` and therefore implements the routes including
1067
- * the <RouteCatchAll> (this is the "legacy" behavior).
1068
- * 2. It's the account application, which always uses `render` and therefore should render as normal.
1069
- *
1070
- * In case the AppShell uses the `children` function, we can always assume that
1071
- * it's a normal Custom Application and that it should trigger a force reload.
1072
- */
1073
- props.render ? jsxRuntime.jsx(jsxRuntime.Fragment, {
1074
- children: props.render()
1075
- }) : jsxRuntime.jsx(index.RouteCatchAll, {})
1076
- }), jsxRuntime.jsx(reactRouterDom.Route, {
1077
- exact: true,
1078
- path: "/",
1079
- children: (() => {
1080
- const previousProjectKey = getPreviousProjectKey(normalizedUser?.defaultProjectKey ?? undefined);
1081
-
1082
- /**
1083
- * NOTE:
1084
- * Given the user has not been loaded a loading spinner is shown.
1085
- * Given the user was not working on a project previously nor has a default
1086
- * project, the user will be prompted to create one.
1087
- * Given the user was working on a project previously or has a default
1088
- * project, the application will redirect to that project.
1089
- */
1090
- if (!normalizedUser) return jsxRuntime.jsx(ApplicationLoader, {});
1091
- if (!previousProjectKey) return jsxRuntime.jsx(RedirectToProjectCreate, {});
1092
- return jsxRuntime.jsx(reactRouterDom.Redirect, {
1093
- to: `/${previousProjectKey}`
1094
- });
1095
- })()
1096
- }), jsxRuntime.jsx(reactRouterDom.Route, {
1097
- exact: false,
1098
- path: "/:projectKey",
1099
- children: jsxRuntime.jsx(ProjectContainer, {
1100
- user: normalizedUser,
1101
- environment: applicationEnvironment,
1102
- disableRoutePermissionCheck: props.disableRoutePermissionCheck
1103
- // This effectively renders the
1104
- // children, which is the application
1105
- // specific part
1106
- ,
1107
- render: props.render,
1108
- children: props.children
1109
- })
1110
- })]
1111
- })]
1112
- })]
1113
- })]
1114
- })]
1115
- })
1116
- })]
1117
- }));
1118
- }
1119
- })
1120
- });
1121
- }
1122
- });
1123
- };
1124
- ApplicationShellAuthenticated.displayName = 'ApplicationShellAuthenticated';
1125
-
1126
- const maxTitleCharLength = 24;
1127
- const staticPaths = ['account', 'login'];
1128
- const getPageTitle = (pathname, additionalParts) => {
1129
- const _pathname$split = pathname.split('/'),
1130
- _pathname$split2 = _slicedToArray(_pathname$split, 3),
1131
- projectKeyOrStaticPath = _pathname$split2[1],
1132
- entryPointUriPath = _pathname$split2[2];
1133
- const customTitleParts = _mapInstanceProperty__default["default"](additionalParts).call(additionalParts, titlePart => {
1134
- if (titlePart.length <= maxTitleCharLength) {
1135
- return titlePart;
1136
- }
1137
- return [_sliceInstanceProperty__default["default"](titlePart).call(titlePart, 0, maxTitleCharLength / 2), _sliceInstanceProperty__default["default"](titlePart).call(titlePart, titlePart.length - maxTitleCharLength / 2)].join('...');
1138
- });
1139
- if (_includesInstanceProperty__default["default"](staticPaths).call(staticPaths, projectKeyOrStaticPath)) {
1140
- return [...(customTitleParts || []), projectKeyOrStaticPath, 'Merchant Center'].join(' - ');
1141
- }
1142
- return [...(customTitleParts || []), entryPointUriPath, projectKeyOrStaticPath, 'Merchant Center'].join(' - ');
1143
- };
1144
- const ApplicationPageTitle = _ref => {
1145
- let _ref$additionalParts = _ref.additionalParts,
1146
- additionalParts = _ref$additionalParts === void 0 ? [] : _ref$additionalParts;
1147
- const location = reactRouterDom.useLocation();
1148
- react.useLayoutEffect(() => {
1149
- const pageTitle = getPageTitle(location.pathname, additionalParts);
1150
- document.title = pageTitle;
1151
- }, [location.pathname, additionalParts]);
1152
- return null;
1153
- };
1154
- ApplicationPageTitle.displayName = 'ApplicationPageTitle';
1155
-
1156
- function ownKeys$7(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1157
- function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$7(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$7(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1158
- const SuspendedRoute = props => jsxRuntime.jsx(reactRouterDom.Route, _objectSpread$7(_objectSpread$7({}, props), {}, {
1159
- children: jsxRuntime.jsx(react.Suspense, {
1160
- fallback: jsxRuntime.jsx(LoadingSpinner__default["default"], {}),
1161
- children: props.children
1162
- })
1163
- }));
1164
- SuspendedRoute.displayName = 'SuspendedRoute';
1165
-
1166
- const _excluded$2 = ["condition", "fallback", "children"];
1167
- function ownKeys$6(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1168
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$6(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1169
- const ProtectedRoute = _ref => {
1170
- let condition = _ref.condition,
1171
- _ref$fallback = _ref.fallback,
1172
- fallback = _ref$fallback === void 0 ? jsxRuntime.jsx(applicationComponents.PageUnauthorized, {}) : _ref$fallback,
1173
- children = _ref.children,
1174
- routeProps = _objectWithoutProperties(_ref, _excluded$2);
1175
- return condition ? jsxRuntime.jsx(reactRouterDom.Route, _objectSpread$6(_objectSpread$6({}, routeProps), {}, {
1176
- children: children
1177
- })) : jsxRuntime.jsx(jsxRuntime.Fragment, {
1178
- children: fallback
1179
- });
1180
- };
1181
-
1182
- const _excluded$1 = ["loading", "fallback"];
1183
- function ownKeys$5(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1184
- function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$5(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$5(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1185
- const SuspendedProtectedRoute = _ref => {
1186
- let _ref$loading = _ref.loading,
1187
- loading = _ref$loading === void 0 ? jsxRuntime.jsx(LoadingSpinner__default["default"], {}) : _ref$loading,
1188
- _ref$fallback = _ref.fallback,
1189
- fallback = _ref$fallback === void 0 ? jsxRuntime.jsx(applicationComponents.PageUnauthorized, {}) : _ref$fallback,
1190
- routeProps = _objectWithoutProperties(_ref, _excluded$1);
1191
- return jsxRuntime.jsx(react.Suspense, {
1192
- fallback: loading,
1193
- children: jsxRuntime.jsx(ProtectedRoute, _objectSpread$5({
1194
- fallback: fallback
1195
- }, routeProps))
1196
- });
1197
- };
1198
-
1199
- var AmILoggedInQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "AmILoggedIn" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "amILoggedIn" }, arguments: [], directives: [] }] } }], loc: { start: 0, end: 36, source: { body: "query AmILoggedIn {\n amILoggedIn\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
1200
- const AmILoggedIn = props => {
1201
- // ...otherwise, we ping a "secured" endpoint in the MC API to see if there is
1202
- // a valid access token. If we get an error, we assume that the user is not
1203
- // authenticated. If we don't get any error, the access token sent with the cookie
1204
- // is valid. We return null while the query is loading.
1205
- const _useMcQuery = applicationShellConnectors.useMcQuery(AmILoggedInQuery, {
1206
- context: {
1207
- target: constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND,
1208
- skipTokenRetry: true
1209
- },
1210
- // NOTE: With `no-cache` the `useQuery` will not trigger a
1211
- // re-render of the `AmILoggedIn` component. Relying on a default
1212
- // fetch policy results in rendering the component without refetching the data
1213
- // which as a result unmounts child components (such as an application).
1214
- //
1215
- // For example:
1216
- // Given the user not authenticated
1217
- // Then the first pass of useQuery returns an exptected error
1218
- // Given the query is triggered again (through `useQuery`)
1219
- // Then the component will re-render
1220
- // Resulting in inconsistent data with the error not being defined
1221
- fetchPolicy: 'no-cache',
1222
- onCompleted: data => {
1223
- if (!data) {
1224
- // In case the request is 200 but there is no data, we assume
1225
- // there are some errors.
1226
- window.localStorage.removeItem(constants.STORAGE_KEYS.IS_AUTHENTICATED);
1227
- } else {
1228
- // Even though the login page might set this flag, we just make sure that
1229
- // we do it here as well. This will help in the future when we eventually
1230
- // move the auth service to itw own domain, in which case the local storage
1231
- // is not shared anymore.
1232
- window.localStorage.setItem(constants.STORAGE_KEYS.IS_AUTHENTICATED, String(true));
1233
- }
1234
- },
1235
- onError: () => {
1236
- // The query fails without the `mcAccessToken`. In this case the caching
1237
- // needs to be unset as otherwise the application will end up in a infinte
1238
- // redirect loop.
1239
- window.localStorage.removeItem(constants.STORAGE_KEYS.IS_AUTHENTICATED);
1240
- }
1241
- }),
1242
- data = _useMcQuery.data,
1243
- loading = _useMcQuery.loading,
1244
- error = _useMcQuery.error;
1245
- if (error) {
1246
- // No matter what error, we consider it as a failed authentication
1247
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1248
- children: props.render({
1249
- isAuthenticated: false
1250
- })
1251
- });
1252
- }
1253
- if (!loading && data && data.amILoggedIn) {
1254
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1255
- children: props.render({
1256
- isAuthenticated: true
1257
- })
1258
- });
1259
- }
1260
- return null;
1261
- };
1262
- AmILoggedIn.displayName = 'AmILoggedIn';
1263
-
1264
- const withoutProjectKeyClaim = scope => {
1265
- var _context;
1266
- return _filterInstanceProperty__default["default"](_context = scope.split(' ')).call(_context, claim => !_startsWithInstanceProperty__default["default"](claim).call(claim, oidc.OIDC_CLAIMS.PROJECT_KEY)).join(' ');
1267
- };
1268
- const hasCachedAuthenticationState = () => {
1269
- if (window.app.__DEVELOPMENT__?.oidc?.authorizeUrl) {
1270
- try {
1271
- let activeProjectKey = applicationShellConnectors.oidcStorage.getActiveProjectKey();
1272
- if (activeProjectKey) {
1273
- // GIVEN The application is not requesting a project key,
1274
- // THEN we assume that the application does not need a project context.
1275
- // GIVEN The application is not requesting a project key,
1276
- // THEN we remove the cached project key.
1277
- // This is the case of an application like `account`.
1278
- if (!window.app.__DEVELOPMENT__?.oidc?.initialProjectKey) {
1279
- applicationShellConnectors.oidcStorage.removeActiveProjectKey();
1280
- }
1281
-
1282
- // If the project key we had in the storage does not match the one
1283
- // we have in the development config, then we need to discard it and
1284
- // use the one from the development config.
1285
- if (window.app.__DEVELOPMENT__?.oidc?.initialProjectKey && window.app.__DEVELOPMENT__?.oidc?.initialProjectKey !== activeProjectKey) {
1286
- activeProjectKey = window.app.__DEVELOPMENT__?.oidc?.initialProjectKey;
1287
- applicationShellConnectors.oidcStorage.setActiveProjectKey(activeProjectKey);
1288
- }
1289
- } else {
1290
- if (window.app.__DEVELOPMENT__?.oidc?.initialProjectKey) {
1291
- // Here we store the initial project key in local storage,
1292
- // so that it gets picked up when we initiate the login flow.
1293
- applicationShellConnectors.oidcStorage.setActiveProjectKey(window.app.__DEVELOPMENT__?.oidc?.initialProjectKey);
1294
- }
1295
- }
1296
-
1297
- // cachedScope is assumed to be the exact cached version of the `requestedScope`
1298
- // if they don't match, then we know that one of the claims within the scope has changed
1299
- // given a change, we need to force the user to log in, so that new values on respective claim
1300
- // will apply for the given custom application
1301
- const cachedScope = applicationShellConnectors.oidcStorage.getSessionScope();
1302
- // Force the user to log in again
1303
- if (!cachedScope) {
1304
- return false;
1305
- }
1306
- // Rebuild the requested OIDC scope to verify that it didn't change.
1307
- const requestedScope = oidc.buildOidcScope({
1308
- projectKey: activeProjectKey ?? undefined,
1309
- oAuthScopes: window.app.__DEVELOPMENT__?.oidc?.oAuthScopes,
1310
- additionalOAuthScopes: window.app.__DEVELOPMENT__?.oidc?.additionalOAuthScopes,
1311
- teamId: window.app.__DEVELOPMENT__?.oidc?.teamId,
1312
- applicationId: window.app.__DEVELOPMENT__?.oidc?.applicationId
1313
- });
1314
- // Omit the project key from the check. This allows to switch projects
1315
- // without having to log in again.
1316
- const cachedScopeWithoutProjectKey = withoutProjectKeyClaim(cachedScope);
1317
- const requestedScopeWithoutProjectKey = withoutProjectKeyClaim(requestedScope);
1318
- // Check that the session scope didn't change.
1319
- if (cachedScopeWithoutProjectKey === requestedScopeWithoutProjectKey) {
1320
- return true;
1321
- }
1322
- return false;
1323
- } catch (err) {
1324
- return false;
1325
- }
1326
- }
1327
- return window.localStorage.getItem(constants.STORAGE_KEYS.IS_AUTHENTICATED) === 'true';
1328
- };
1329
-
1330
- const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-ec951044.cjs.dev.js' /* webpackChunkName: "oidc-callback" */); }));
1331
-
1332
- function ownKeys$4(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1333
- function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1334
- const Authenticated = props => {
1335
- // We attempt to see if the user was already authenticated by looking
1336
- // at the "cached" flag in local storage.
1337
- const cachedAuthenticationState = hasCachedAuthenticationState();
1338
- if (cachedAuthenticationState) {
1339
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1340
- children: props.render({
1341
- isAuthenticated: true
1342
- })
1343
- });
1344
- }
1345
-
1346
- // When using the OIDC workflow, we always return false, to trigger
1347
- // the redirect to the login page.
1348
- if (window.app.__DEVELOPMENT__?.oidc?.authorizeUrl) {
1349
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1350
- children: props.render({
1351
- isAuthenticated: false
1352
- })
1353
- });
1354
- }
1355
-
1356
- // Fall back to check for cookie-based authentication.
1357
- return jsxRuntime.jsx(AmILoggedIn, _objectSpread$4({}, props));
1358
- };
1359
- Authenticated.displayName = 'Authenticated';
1360
- const AuthenticationRoutes = props => jsxRuntime.jsxs(reactRouterDom.Switch, {
1361
- children: [jsxRuntime.jsx(SuspendedRoute, {
1362
- path: `/account/oidc/callback`,
1363
- children: jsxRuntime.jsx(OidcCallback, {
1364
- locale: props.locale,
1365
- applicationMessages: props.applicationMessages
1366
- })
1367
- }), jsxRuntime.jsx(SuspendedRoute, {
1368
- path: `/:projectKey/:identifier/oidc/callback`,
1369
- children: jsxRuntime.jsx(OidcCallback, {
1370
- locale: props.locale,
1371
- applicationMessages: props.applicationMessages
1372
- })
1373
- }), jsxRuntime.jsx(reactRouterDom.Route, {
1374
- children: jsxRuntime.jsx(Authenticated, _objectSpread$4({}, props))
1375
- })]
1376
- });
1377
- AuthenticationRoutes.displayName = 'AuthenticationRoutes';
1378
-
1379
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
1380
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
1381
- let ErrorBoundary = /*#__PURE__*/function (_Component) {
1382
- function ErrorBoundary() {
1383
- var _this;
1384
- _classCallCheck(this, ErrorBoundary);
1385
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1386
- args[_key] = arguments[_key];
1387
- }
1388
- _this = _callSuper(this, ErrorBoundary, [...args]);
1389
- _this.state = {
1390
- hasError: false
1391
- };
1392
- return _this;
1393
- }
1394
- _inherits(ErrorBoundary, _Component);
1395
- return _createClass(ErrorBoundary, [{
1396
- key: "componentDidUpdate",
1397
- value: function componentDidUpdate(prevProps) {
1398
- const hasRouteChanged = prevProps.pathname !== this.props.pathname;
1399
- this.setState(prevState => hasRouteChanged && prevState.hasError ? {
1400
- hasError: false
1401
- } : null);
1402
- }
1403
- }, {
1404
- key: "componentDidCatch",
1405
- value: function componentDidCatch(error, errorInfo) {
1406
- // Note: In development mode componentDidCatch is not based on try-catch
1407
- // to catch exceptions. Thus exceptions caught here will also be caught in
1408
- // the global `error` event listener (setup-global-error-listener.js).
1409
- // see: https://github.com/facebook/react/issues/10474
1410
- sentry.reportErrorToSentry(error, {
1411
- extra: errorInfo
1412
- });
1413
- }
1414
- }, {
1415
- key: "render",
1416
- value: function render() {
1417
- if (this.state.hasError) {
1418
- return jsxRuntime.jsx(ErrorApologizer, {});
1419
- }
1420
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1421
- children: this.props.children
1422
- });
1423
- }
1424
- }], [{
1425
- key: "getDerivedStateFromError",
1426
- value: function getDerivedStateFromError(/* error */
1427
- ) {
1428
- // Update state so the next render will show the fallback UI.
1429
- return {
1430
- hasError: true
1431
- };
1432
- }
1433
- }]);
1434
- }(react.Component);
1435
-
1436
- function ownKeys$3(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1437
- function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$3(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$3(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1438
- /**
1439
- * NOTE:
1440
- * This function try-catches around a `JSON.parse` and return
1441
- * the parsed value whenever possible.
1442
- *
1443
- * This allows parsing most primitive values.
1444
- *
1445
- * - `JSON.parse('null')` => `null`
1446
- * - `JSON.parse('1')` => `1`
1447
- * - `JSON.parse('["a", "b"]')` => `['a', 'b']`
1448
- */
1449
- const getCoerceEnvironmentValue = environmentValueAsString => {
1450
- // Return the value as-is if it's not a string.
1451
- if (typeof environmentValueAsString !== 'string') {
1452
- return environmentValueAsString;
1453
- }
1454
-
1455
- // In case the value is a string, we try to parse it to attempt to extract
1456
- // the primitive value, if the original value is indeed supposed to be a primitive.
1457
- // For example, `'1'` is converted to a number, `'true'` is converted to a boolean, etc.
1458
- try {
1459
- // Strip out escaped quotes. This is mostly important to coerce an array of string
1460
- // with escaped quotes.
1461
- return JSON.parse(String(environmentValueAsString).replace(/(\\")/g, '"'));
1462
- } catch (e) {
1463
- return environmentValueAsString;
1464
- }
1465
- };
1466
- const shallowlyCoerceValues = uncoercedEnvironmentValues => {
1467
- var _context;
1468
- return _reduceInstanceProperty__default["default"](_context = _Object$keys__default["default"](uncoercedEnvironmentValues)).call(_context, (coercedEnvironmentValues, key) => {
1469
- const uncoercedEnvironmentValue = uncoercedEnvironmentValues[key];
1470
- return _objectSpread$3(_objectSpread$3({}, coercedEnvironmentValues), {}, {
1471
- [key]: getCoerceEnvironmentValue(uncoercedEnvironmentValue)
1472
- });
1473
- }, {});
1474
- };
1475
- const useCoercedEnvironmentValues = environment => {
1476
- const coercedEnvironmentValues = react.useMemo(() => shallowlyCoerceValues(environment), [environment]);
1477
- return coercedEnvironmentValues;
1478
- };
1479
-
1480
- const ApplicationShellProvider = props => {
1481
- const apolloClient = react.useMemo(() => props.apolloClient ?? applicationShellConnectors.createApolloClient(), [props.apolloClient]);
1482
- react.useEffect(() => {
1483
- applicationShellConnectors.setCachedApolloClient(apolloClient);
1484
- }, [apolloClient]);
1485
- const coercedEnvironmentValues = useCoercedEnvironmentValues(props.environment);
1486
- const browserLocale = getBrowserLocale(window);
1487
- return jsxRuntime.jsx(react.Suspense, {
1488
- fallback: jsxRuntime.jsx(ApplicationLoader, {}),
1489
- children: jsxRuntime.jsx(ErrorBoundary, {
1490
- children: jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
1491
- environment: coercedEnvironmentValues,
1492
- children: jsxRuntime.jsx(reactRedux.Provider, {
1493
- store: index.internalReduxStore,
1494
- children: jsxRuntime.jsx(react$2.ApolloProvider, {
1495
- client: apolloClient,
1496
- children: jsxRuntime.jsxs(reactRouterDom.Router, {
1497
- history: getBrowserHistory(),
1498
- children: [jsxRuntime.jsx(ApplicationPageTitle, {}), jsxRuntime.jsx(AuthenticationRoutes, {
1499
- locale: browserLocale,
1500
- applicationMessages: props.applicationMessages,
1501
- render: _ref => {
1502
- let isAuthenticated = _ref.isAuthenticated;
1503
- if (isAuthenticated) return props.children({
1504
- isAuthenticated
1505
- });
1506
- return jsxRuntime.jsx(i18n.AsyncLocaleData, {
1507
- locale: browserLocale,
1508
- applicationMessages: props.applicationMessages,
1509
- children: _ref2 => {
1510
- let locale = _ref2.locale,
1511
- messages = _ref2.messages;
1512
- return jsxRuntime.jsx(ConfigureIntlProvider, {
1513
- locale: locale,
1514
- messages: messages,
1515
- children: props.children({
1516
- isAuthenticated
1517
- })
1518
- });
1519
- }
1520
- });
1521
- }
1522
- })]
1523
- })
1524
- })
1525
- })
1526
- })
1527
- })
1528
- });
1529
- };
1530
- ApplicationShellProvider.displayName = 'ApplicationShellProvider';
1531
-
1532
- const RedirectToLogin = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-login-8a61864c.cjs.dev.js' /* webpackChunkName: "redirect-to-login" */); }));
1533
-
1534
- function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
1535
- const styles = process.env.NODE_ENV === "production" ? {
1536
- name: "gx7yk8",
1537
- styles: "html,body{font-size:var(--font-size-30);height:100vh;}#app{height:100%;}"
1538
- } : {
1539
- name: "1hmvacu-styles",
1540
- styles: "html,body{font-size:var(--font-size-30);height:100vh;}#app{height:100%;};label:styles;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsb2JhbC1zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdrQiIsImZpbGUiOiJnbG9iYWwtc3R5bGVzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbS9tYXRlcmlhbHMvcmVzZXRzLmNzcyc7XG5pbXBvcnQgeyBHbG9iYWwsIGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuY29uc3Qgc3R5bGVzID0gY3NzYFxuICBodG1sLFxuICBib2R5IHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zMCk7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgfVxuXG4gICNhcHAge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuYDtcblxuY29uc3QgR2xvYmFsU3R5bGVzID0gKCkgPT4gPEdsb2JhbCBzdHlsZXM9e3N0eWxlc30gLz47XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFN0eWxlcztcbiJdfQ== */",
1541
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
1542
- };
1543
- const GlobalStyles = () => jsxRuntime.jsx(react$1.Global, {
1544
- styles: styles
1545
- });
1546
-
1547
- const StrictModeEnablement$1 = props => {
1548
- if (props.enableReactStrictMode) {
1549
- return jsxRuntime.jsx(react.StrictMode, {
1550
- children: props.children
1551
- });
1552
- } else {
1553
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1554
- children: props.children
1555
- });
1556
- }
1557
- };
1558
- const ApplicationShell = props => {
1559
- react.useEffect(() => {
1560
- props.onRegisterErrorListeners?.({
1561
- dispatch: index.internalReduxStore.dispatch
1562
- });
1563
- // eslint-disable-next-line react-hooks/exhaustive-deps
1564
- }, []); // <-- run only once, when component mounts
1565
-
1566
- return jsxRuntime.jsxs(StrictModeEnablement$1, {
1567
- enableReactStrictMode: props.enableReactStrictMode,
1568
- children: [jsxRuntime.jsx(GlobalStyles, {}), jsxRuntime.jsx(ApplicationShellProvider, {
1569
- apolloClient: props.apolloClient,
1570
- environment: props.environment,
1571
- applicationMessages: props.applicationMessages,
1572
- children: _ref => {
1573
- let isAuthenticated = _ref.isAuthenticated;
1574
- if (isAuthenticated) {
1575
- return jsxRuntime.jsxs(reactRouterDom.Switch, {
1576
- children: [jsxRuntime.jsx(SuspendedRoute, {
1577
- path: "/logout",
1578
- children: jsxRuntime.jsx(RedirectToLogout, {})
1579
- }), jsxRuntime.jsx(SuspendedRoute, {
1580
- children: jsxRuntime.jsx(ApplicationShellAuthenticated, {
1581
- defaultFeatureFlags: props.defaultFeatureFlags,
1582
- featureFlags: props.featureFlags,
1583
- render: props.render,
1584
- applicationMessages: props.applicationMessages,
1585
- onMenuItemClick: props.onMenuItemClick,
1586
- disableRoutePermissionCheck: props.disableRoutePermissionCheck,
1587
- children: props.children
1588
- })
1589
- })]
1590
- });
1591
- }
1592
- return jsxRuntime.jsx(RedirectToLogin, {});
1593
- }
1594
- })]
1595
- });
1596
- };
1597
- ApplicationShell.displayName = 'ApplicationShell';
1598
- ApplicationShell.version = version;
1599
-
1600
- const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-16c18b8b.cjs.dev.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1601
-
1602
- function CustomViewFlopFlipProvider(props) {
1603
- const adapterArgs = react.useMemo(() => ({
1604
- user: {
1605
- key: props.user?.id
1606
- }
1607
- }), [props.user?.id]);
1608
- return jsxRuntime.jsx(reactBroadcast.ConfigureFlopFlip, {
1609
- adapter: memoryAdapter.adapter,
1610
- defaultFlags: _flagsInstanceProperty__default["default"](props),
1611
- adapterArgs: adapterArgs,
1612
- children: props.children
1613
- });
1614
- }
1615
-
1616
- function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1617
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$2(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1618
- const CustomViewWithPermissionCheck = props => {
1619
- const permissionKeys = ssr.entryPointUriPathToPermissionKeys(constants.CUSTOM_VIEW_HOST_ENTRY_POINT_URI_PATH);
1620
-
1621
- // Require View permission to render the application.
1622
- const canView = permissions.useIsAuthorized({
1623
- demandedPermissions: [permissionKeys.View]
1624
- });
1625
- if (canView) {
1626
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1627
- children: props.children
1628
- });
1629
- }
1630
- return jsxRuntime.jsx(applicationComponents.PageUnauthorized, {});
1631
- };
1632
- function CustomViewShellAuthenticated(props) {
1633
- const browserLocale = getBrowserLocale(window);
1634
- return jsxRuntime.jsx(FetchUser, {
1635
- children: _ref => {
1636
- let isLoading = _ref.isLoading,
1637
- fetchUserError = _ref.error,
1638
- user = _ref.user;
1639
- if (isLoading) {
1640
- return jsxRuntime.jsx(ApplicationLoader, {});
1641
- }
1642
- return jsxRuntime.jsx(i18n.AsyncLocaleData, {
1643
- locale: user?.language || browserLocale,
1644
- applicationMessages: props.messages,
1645
- children: _ref2 => {
1646
- let isLoadingLocaleData = _ref2.isLoading,
1647
- locale = _ref2.locale,
1648
- messages = _ref2.messages;
1649
- return jsxRuntime.jsx(ConfigureIntlProvider
1650
- // We do not want to pass the language as long as the locale data
1651
- // is not loaded.
1652
- , _objectSpread$2(_objectSpread$2({}, isLoadingLocaleData ? {} : {
1653
- locale,
1654
- messages
1655
- }), {}, {
1656
- children: jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
1657
- user: user,
1658
- environment: props.environment,
1659
- children: jsxRuntime.jsx(jsxRuntime.Fragment, {
1660
- children: jsxRuntime.jsx(FetchProject, {
1661
- projectKey: props.projectKey,
1662
- children: _ref3 => {
1663
- let isProjectLoading = _ref3.isLoading,
1664
- project = _ref3.project;
1665
- if (fetchUserError) {
1666
- return jsxRuntime.jsx(applicationComponents.PageUnauthorized, {});
1667
- }
1668
- if (isProjectLoading) {
1669
- return jsxRuntime.jsx(ApplicationLoader, {});
1670
- }
1671
- return jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
1672
- user: user,
1673
- project: project,
1674
- projectDataLocale: props.dataLocale,
1675
- environment: props.environment,
1676
- children: jsxRuntime.jsx(CustomViewFlopFlipProvider, {
1677
- flags: _flagsInstanceProperty__default["default"](props),
1678
- user: user,
1679
- children: jsxRuntime.jsx(CustomViewWithPermissionCheck, {
1680
- children: props.children
1681
- })
1682
- })
1683
- });
1684
- }
1685
- })
1686
- })
1687
- })
1688
- }));
1689
- }
1690
- });
1691
- }
1692
- });
1693
- }
1694
-
1695
- // These styles exist so we can make the Page Layout components to work
1696
- // property when they are used within a Custom View panel.
1697
- // Those components have some default margins and paddings around them
1698
- // which are required when using this components in Custom Applications,
1699
- // but we don't want them in Custom View panels since they already provide
1700
- // their own paddings.
1701
- // These overrides allows us to change the border/margins those Page Layout
1702
- // components use when they are used within a Custom View panel.
1703
- const customViewsThemesOverrides = {
1704
- default: {
1705
- marginForCustomViewsSelectorAsTabular: '0',
1706
- marginForPageContent: `${designSystem.designTokens.spacing50} 0`,
1707
- paddingForDetailPageHeader: `0 0 ${designSystem.designTokens.spacing40} 0`,
1708
- paddingForMainPageHeader: '0',
1709
- paddingForTabularPageHeader: '0'
1710
- }
1711
- };
1712
-
1713
- function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1714
- function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$1(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$1(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1715
- const browserLocale = getBrowserLocale(window);
1716
- function NotificationsContainer(props) {
1717
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
1718
- children: [jsxRuntime.jsxs("div", {
1719
- ref: props.notificationsGlobalRef,
1720
- role: "region",
1721
- "aria-live": "polite",
1722
- style: {
1723
- gridRow: 1,
1724
- gridColumn: '1/3'
1725
- },
1726
- children: [jsxRuntime.jsx("div", {
1727
- id: "above-top-navigation"
1728
- }), jsxRuntime.jsx(reactNotifications.NotificationsList, {
1729
- domain: constants.DOMAINS.GLOBAL
1730
- })]
1731
- }), jsxRuntime.jsx("div", {
1732
- ref: props.notificationsPageRef,
1733
- children: jsxRuntime.jsx(reactNotifications.NotificationsList, {
1734
- domain: constants.DOMAINS.PAGE
1735
- })
1736
- }), jsxRuntime.jsx(reactNotifications.NotificationsList, {
1737
- domain: constants.DOMAINS.SIDE
1738
- })]
1739
- });
1740
- }
1741
-
1742
- // 49px is the height of the ModalPageTopBar, which is fixed, so we need to subtract it from the height of the content.
1743
- const ContentWrapper = /*#__PURE__*/_styled__default["default"]("div", process.env.NODE_ENV === "production" ? {
1744
- target: "e8xye0r0"
1745
- } : {
1746
- target: "e8xye0r0",
1747
- label: "ContentWrapper"
1748
- })("height:calc(100% - 49px);padding:", designSystem.designTokens.spacing40, " 40px;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImN1c3RvbS12aWV3LXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1R2lDIiwiZmlsZSI6ImN1c3RvbS12aWV3LXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG4gIFN1c3BlbnNlLFxuICBTdHJpY3RNb2RlLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBBcG9sbG9DbGllbnQsIHR5cGUgTm9ybWFsaXplZENhY2hlT2JqZWN0IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJvdXRlIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQge1xuICBNb2RhbFBhZ2VUb3BCYXIsXG4gIFBhZ2VVbmF1dGhvcml6ZWQsXG4gIFBvcnRhbHNDb250YWluZXIsXG4gIHRoZW1lc092ZXJyaWRlcyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDdXN0b21WaWV3Q29udGV4dFByb3ZpZGVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQge1xuICB0eXBlIEFwcGxpY2F0aW9uV2luZG93LFxuICBDVVNUT01fVklFV1NfRVZFTlRTX05BTUVTLFxuICBDVVNUT01fVklFV1NfRVZFTlRTX01FVEEsXG4gIEN1c3RvbVZpZXdEYXRhLFxuICBET01BSU5TLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXN5bmNMb2NhbGVEYXRhLFxuICB0eXBlIFRBc3luY0xvY2FsZURhdGFQcm9wcyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgVGhlbWVQcm92aWRlcixcbiAgZGVzaWduVG9rZW5zLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9kZXNpZ24tc3lzdGVtJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXIvYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCBHbG9iYWxTdHlsZXMgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwvZ2xvYmFsLXN0eWxlcyc7XG5pbXBvcnQgQXBwbGljYXRpb25TaGVsbFByb3ZpZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyJztcbmltcG9ydCB7IGdldEJyb3dzZXJMb2NhbGUgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlci91dGlscyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBDdXN0b21WaWV3RGV2SG9zdCBmcm9tICcuLi9jdXN0b20tdmlldy1kZXYtaG9zdCc7XG5pbXBvcnQgQ3VzdG9tVmlld1NoZWxsQXV0aGVudGljYXRlZCBmcm9tICcuLi9jdXN0b20tdmlldy1zaGVsbC1hdXRoZW50aWNhdGVkJztcbmltcG9ydCB7IGN1c3RvbVZpZXdzVGhlbWVzT3ZlcnJpZGVzIH0gZnJvbSAnLi9jdXN0b20tdmlldy1zaGVsbC5zdHlsZXMnO1xuXG5kZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuXG50eXBlIFRIb3N0Q29udGV4dCA9IHtcbiAgaG9zdFVybDogc3RyaW5nO1xuICBkYXRhTG9jYWxlOiBzdHJpbmc7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgY3VzdG9tVmlld0NvbmZpZzogQ3VzdG9tVmlld0RhdGE7XG4gIHByb2plY3RLZXk/OiBzdHJpbmc7XG59O1xuXG50eXBlIFRIb3N0RXZlbnREYXRhID0ge1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbiAgZXZlbnROYW1lOiBzdHJpbmc7XG4gIGV2ZW50RGF0YToge1xuICAgIGNvbnRleHQ6IFRIb3N0Q29udGV4dDtcbiAgfTtcbn07XG5cbnR5cGUgVEN1c3RvbVZpZXdTaGVsbFByb3BzID0ge1xuICBhcG9sbG9DbGllbnQ/OiBBcG9sbG9DbGllbnQ8Tm9ybWFsaXplZENhY2hlT2JqZWN0PjtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIGRpc2FibGVEZXZIb3N0PzogYm9vbGVhbjtcbiAgZW5hYmxlUmVhY3RTdHJpY3RNb2RlPzogYm9vbGVhbjtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGJyb3dzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG5cbnR5cGUgVE5vdGlmaWNhdGlvbnNDb250YWluZXJQcm9wcyA9IHtcbiAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbn07XG5mdW5jdGlvbiBOb3RpZmljYXRpb25zQ29udGFpbmVyKHByb3BzOiBUTm90aWZpY2F0aW9uc0NvbnRhaW5lclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtwcm9wcy5ub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBncmlkUm93OiAxLFxuICAgICAgICAgIGdyaWRDb2x1bW46ICcxLzMnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiByZWY9e3Byb3BzLm5vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgPC8+XG4gICk7XG59XG5cbi8vIDQ5cHggaXMgdGhlIGhlaWdodCBvZiB0aGUgTW9kYWxQYWdlVG9wQmFyLCB3aGljaCBpcyBmaXhlZCwgc28gd2UgbmVlZCB0byBzdWJ0cmFjdCBpdCBmcm9tIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQuXG5jb25zdCBDb250ZW50V3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGhlaWdodDogY2FsYygxMDAlIC0gNDlweCk7XG4gIHBhZGRpbmc6ICR7ZGVzaWduVG9rZW5zLnNwYWNpbmc0MH0gNDBweDtcbmA7XG5cbnR5cGUgVFN0cmljdE1vZGVFbmFibGVtZW50UHJvcHMgPSB7XG4gIGVuYWJsZVJlYWN0U3RyaWN0TW9kZT86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufTtcbmZ1bmN0aW9uIFN0cmljdE1vZGVFbmFibGVtZW50KHByb3BzOiBUU3RyaWN0TW9kZUVuYWJsZW1lbnRQcm9wcykge1xuICBpZiAocHJvcHMuZW5hYmxlUmVhY3RTdHJpY3RNb2RlKSB7XG4gICAgcmV0dXJuIDxTdHJpY3RNb2RlPntwcm9wcy5jaGlsZHJlbn08L1N0cmljdE1vZGU+O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiA8Pntwcm9wcy5jaGlsZHJlbn08Lz47XG4gIH1cbn1cblxuZnVuY3Rpb24gQ3VzdG9tVmlld1RoZW1lUHJvdmlkZXIoKSB7XG4gIGNvbnN0IHRoZW1lID0gJ2RlZmF1bHQnO1xuXG4gIGNvbnN0IGN1c3RvbVZpZXdUaGVtZU92ZXJyaWRlcyA9IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLi4udGhlbWVzT3ZlcnJpZGVzW3RoZW1lXSxcbiAgICAuLi5jdXN0b21WaWV3c1RoZW1lc092ZXJyaWRlc1t0aGVtZV0sXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9IHRoZW1lT3ZlcnJpZGVzPXtjdXN0b21WaWV3VGhlbWVPdmVycmlkZXN9IC8+XG4gICk7XG59XG5cbi8qXG4gIER1cmluZyBlMmUgdGVzdHMsIHRoZSBDdXN0b20gVmlldyB0ZW1wbGF0ZSBpcyBidWlsdCBpbiBwcm9kdWN0aW9uIG1vZGUgYnV0IHN0aWxsIHJ1bnMgb24gbG9jYWxob3N0LlxuICBDaGVja2luZyBmb3IgbG9jYWwgcHJvZHVjdGlvbiBtb2RlIGlzIG5lY2Vzc2FyeSBmb3IgYXBwbHlpbmcgdGhlIGRldmVsb3BtZW50IGhvc3QgVVJMLFxuICBjcmVhdGluZyBhbiBlbnZpcm9ubWVudCBmb3IgdGVzdGluZyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDdXN0b20gVmlldyB0ZW1wbGF0ZS5cbiovXG5jb25zdCBpc0xvY2FsUHJvZE1vZGUgPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nICYmIHdpbmRvdy5hcHAuZW52ID09PSAnZGV2ZWxvcG1lbnQnO1xuXG5mdW5jdGlvbiBDdXN0b21WaWV3U2hlbGwocHJvcHM6IFRDdXN0b21WaWV3U2hlbGxQcm9wcykge1xuICBjb25zdCBbaG9zdENvbnRleHQsIHNldEhvc3RDb250ZXh0XSA9IHVzZVN0YXRlPFRIb3N0Q29udGV4dD4oKTtcbiAgY29uc3QgaUZyYW1lQ29tbXVuaWNhdGlvblBvcnQgPSB1c2VSZWY8TWVzc2FnZVBvcnQgfCB1bmRlZmluZWQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zR2xvYmFsUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uc1BhZ2VSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBsYXlvdXRSZWZzID0gdXNlUmVmPHtcbiAgICBub3RpZmljYXRpb25zR2xvYmFsUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gIH0+KHtcbiAgICBub3RpZmljYXRpb25zR2xvYmFsUmVmLFxuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmLFxuICB9KTtcblxuICBjb25zdCBob3N0TWVzc2FnZUhhbmRsZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1lc3NhZ2VFdmVudDxUSG9zdEV2ZW50RGF0YT4pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnQuZGF0YS5ldmVudE5hbWUgPT09XG4gICAgICAgIENVU1RPTV9WSUVXU19FVkVOVFNfTkFNRVMuQ1VTVE9NX1ZJRVdfSU5JVElBTElaQVRJT05cbiAgICAgICkge1xuICAgICAgICBzZXRIb3N0Q29udGV4dChldmVudC5kYXRhLmV2ZW50RGF0YS5jb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQ3VzdG9tVmlld1NoZWxsOiBVbmtub3duIHJlY2VpdmVkIGV2ZW50IHdpdGggbmFtZTogJHtldmVudC5kYXRhLmV2ZW50TmFtZX1gLFxuICAgICAgICAgIHsgZXZlbnQgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpRnJhbWVDb21tdW5pY2F0aW9uUG9ydC5jdXJyZW50Py5wb3N0TWVzc2FnZSh7XG4gICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sXG4gICAgICBzb3VyY2U6IGAke0NVU1RPTV9WSUVXU19FVkVOVFNfTUVUQS5DVVNUT01fVklFV19LRVlfUFJFRklYfSR7aG9zdENvbnRleHQ/LmN1c3RvbVZpZXdDb25maWcuaWR9YCxcbiAgICAgIGRlc3RpbmF0aW9uOiBDVVNUT01fVklFV1NfRVZFTlRTX01FVEEuSE9TVF9BUFBMSUNBVElPTl9DT0RFLFxuICAgICAgZXZlbnROYW1lOiBDVVNUT01fVklFV1NfRVZFTlRTX05BTUVTLkNVU1RPTV9WSUVXX0NMT1NFLFxuICAgICAgZXZlbnREYXRhOiB7fSxcbiAgICB9KTtcbiAgfSwgW2hvc3RDb250ZXh0Py5jdXN0b21WaWV3Q29uZmlnLmlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBib290c3RyYXBNZXNzYWdlSGFuZGxlciA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIChldmVudC5vcmlnaW4gPT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gfHxcbiAgICAgICAgICAvLyBldmVudC5vcmlnaW4gaXMgbm90IGRlZmluZWQgaW4gdGVzdCBlbnZpcm9ubWVudFxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpICYmXG4gICAgICAgIGV2ZW50LmRhdGEgPT09IENVU1RPTV9WSUVXU19FVkVOVFNfTkFNRVMuQ1VTVE9NX1ZJRVdfQk9PVFNUUkFQXG4gICAgICApIHtcbiAgICAgICAgaUZyYW1lQ29tbXVuaWNhdGlvblBvcnQuY3VycmVudCA9IGV2ZW50LnBvcnRzWzBdO1xuICAgICAgICBpRnJhbWVDb21tdW5pY2F0aW9uUG9ydC5jdXJyZW50Lm9ubWVzc2FnZSA9IGhvc3RNZXNzYWdlSGFuZGxlcjtcbiAgICAgICAgLy8gT25jZSBib290c3RyYXBlZCwgd2UgZG9uJ3Qgd2FudCB0byBsaXN0ZW4gZm9yIGdsb2JhbCBtZXNzYWdlcyBhbnltb3JlLlxuICAgICAgICAvLyBXZSB3aWxsIG9ubHkgbGlzdGVuIHRvIG1lc3NhZ2VzIGNvbWluZyB0aHJvdWdoIHRoZSBNZXNzYWdlQ2hhbm5lbCBwb3J0LlxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGJvb3RzdHJhcE1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnQ3VzdG9tVmlld1NoZWxsOiBSZWNlaXZlZCBhbiBldmVudCB0aGF0IGlzIG5vdCBhbGxvd2VkLicsXG4gICAgICAgICAgeyBldmVudCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYm9vdHN0cmFwTWVzc2FnZUhhbmRsZXIpO1xuXG4gICAgLy8gVGhpcyBub3RpZmllcyB0aGUgY3VzdG9tIHZpZXcgbG9hZGVyIHRoYXQgdGhlIGlmcmFtZSBpcyByZWFkeS5cbiAgICAvLyBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IGN1c3RvbSB2aWV3IGxvYWRlciBpbiB0aGUgaG9zdCBhcHBsaWNhdGlvbiBmcm9tIHYyNC54IG9ud2FyZHNcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHtcbiAgICAgIG9yaWdpbjogd2luZG93LmxvY2F0aW9uLm9yaWdpbixcbiAgICAgIGV2ZW50TmFtZTogQ1VTVE9NX1ZJRVdTX0VWRU5UU19OQU1FUy5DVVNUT01fVklFV19SRUFEWSxcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGJvb3RzdHJhcE1lc3NhZ2VIYW5kbGVyKTtcbiAgICB9O1xuICB9LCBbaG9zdE1lc3NhZ2VIYW5kbGVyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBDbG9zZSB0aGUgY2hhbm5lbCB3aGVuIHRoZSBjb21wb25lbnQgdW5tb3VudHNcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaUZyYW1lQ29tbXVuaWNhdGlvblBvcnQuY3VycmVudD8uY2xvc2UoKTtcbiAgICAgIGlGcmFtZUNvbW11bmljYXRpb25Qb3J0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIGlmICghaG9zdENvbnRleHQpIHtcbiAgICByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIHNob3dMb2dvIC8+O1xuICB9XG5cbiAgY29uc3QgaG9zdFVybCA9XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgfHwgaXNMb2NhbFByb2RNb2RlXG4gICAgICA/IHdpbmRvdy5hcHAuX19ERVZFTE9QTUVOVF9fPy5jdXN0b21WaWV3SG9zdFVybCFcbiAgICAgIDogaG9zdENvbnRleHQuaG9zdFVybDtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsU3R5bGVzIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyXG4gICAgICAgIGVudmlyb25tZW50PXt3aW5kb3cuYXBwfVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEN1c3RvbVZpZXdDb250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICBob3N0VXJsPXtob3N0VXJsfVxuICAgICAgICAgICAgICAgIGN1c3RvbVZpZXdDb25maWc9e2hvc3RDb250ZXh0LmN1c3RvbVZpZXdDb25maWd9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q3VzdG9tVmlld1NoZWxsQXV0aGVudGljYXRlZFxuICAgICAgICAgICAgICAgICAgZGF0YUxvY2FsZT17aG9zdENvbnRleHQuZGF0YUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXt3aW5kb3cuYXBwfVxuICAgICAgICAgICAgICAgICAgbWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtob3N0Q29udGV4dC5wcm9qZWN0S2V5fVxuICAgICAgICAgICAgICAgICAgZmxhZ3M9e2hvc3RDb250ZXh0LmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgIGN1c3RvbVZpZXdDb25maWc9e2hvc3RDb250ZXh0LmN1c3RvbVZpZXdDb25maWd9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPEN1c3RvbVZpZXdUaGVtZVByb3ZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25zR2xvYmFsUmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25zUGFnZVJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9XG4gICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgcGF0aD17YC9jdXN0b20tdmlld3MvJHtob3N0Q29udGV4dC5jdXN0b21WaWV3Q29uZmlnLmlkfS9wcm9qZWN0cy8ke2hvc3RDb250ZXh0LnByb2plY3RLZXl9YH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPE1vZGFsUGFnZVRvcEJhciBvbkNsb3NlPXtoYW5kbGVDbG9zZX0gaGlkZVBhdGhMYWJlbCAvPlxuICAgICAgICAgICAgICAgICAgICA8Q29udGVudFdyYXBwZXI+e3Byb3BzLmNoaWxkcmVufTwvQ29udGVudFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDwvQ3VzdG9tVmlld1NoZWxsQXV0aGVudGljYXRlZD5cbiAgICAgICAgICAgICAgPC9DdXN0b21WaWV3Q29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e2Jyb3dzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgPFBhZ2VVbmF1dGhvcml6ZWQgLz5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuY29uc3QgQ3VzdG9tVmlld1NoZWxsV3JhcHBlciA9IChwcm9wczogVEN1c3RvbVZpZXdTaGVsbFByb3BzKSA9PiB7XG4gIGlmIChcbiAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgfHwgaXNMb2NhbFByb2RNb2RlKSAmJlxuICAgICFwcm9wcy5kaXNhYmxlRGV2SG9zdFxuICApIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0cmljdE1vZGVFbmFibGVtZW50IGVuYWJsZVJlYWN0U3RyaWN0TW9kZT17cHJvcHMuZW5hYmxlUmVhY3RTdHJpY3RNb2RlfT5cbiAgICAgICAgPFN1c3BlbnNlIGZhbGxiYWNrPXs8QXBwbGljYXRpb25Mb2FkZXIgLz59PlxuICAgICAgICAgIDxDdXN0b21WaWV3RGV2SG9zdCBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfT5cbiAgICAgICAgICAgIDxDdXN0b21WaWV3U2hlbGxcbiAgICAgICAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgIDwvQ3VzdG9tVmlld1NoZWxsPlxuICAgICAgICAgIDwvQ3VzdG9tVmlld0Rldkhvc3Q+XG4gICAgICAgIDwvU3VzcGVuc2U+XG4gICAgICA8L1N0cmljdE1vZGVFbmFibGVtZW50PlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8U3RyaWN0TW9kZUVuYWJsZW1lbnQgZW5hYmxlUmVhY3RTdHJpY3RNb2RlPXtwcm9wcy5lbmFibGVSZWFjdFN0cmljdE1vZGV9PlxuICAgICAgPEN1c3RvbVZpZXdTaGVsbFxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9DdXN0b21WaWV3U2hlbGw+XG4gICAgPC9TdHJpY3RNb2RlRW5hYmxlbWVudD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVZpZXdTaGVsbFdyYXBwZXI7XG4iXX0= */"));
1749
- function StrictModeEnablement(props) {
1750
- if (props.enableReactStrictMode) {
1751
- return jsxRuntime.jsx(react.StrictMode, {
1752
- children: props.children
1753
- });
1754
- } else {
1755
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
1756
- children: props.children
1757
- });
1758
- }
1759
- }
1760
- function CustomViewThemeProvider() {
1761
- const theme = 'default';
1762
- const customViewThemeOverrides = _objectSpread$1(_objectSpread$1({}, applicationComponents.themesOverrides[theme]), customViewsThemesOverrides[theme]);
1763
- return jsxRuntime.jsx(designSystem.ThemeProvider, {
1764
- theme: theme,
1765
- themeOverrides: customViewThemeOverrides
1766
- });
1767
- }
1768
-
1769
- /*
1770
- During e2e tests, the Custom View template is built in production mode but still runs on localhost.
1771
- Checking for local production mode is necessary for applying the development host URL,
1772
- creating an environment for testing interaction with the Custom View template.
1773
- */
1774
- const isLocalProdMode = process.env.NODE_ENV === 'production' && window.app.env === 'development';
1775
- function CustomViewShell(props) {
1776
- const _useState = react.useState(),
1777
- _useState2 = _slicedToArray(_useState, 2),
1778
- hostContext = _useState2[0],
1779
- setHostContext = _useState2[1];
1780
- const iFrameCommunicationPort = react.useRef(null);
1781
- const notificationsGlobalRef = react.useRef(null);
1782
- const notificationsPageRef = react.useRef(null);
1783
- const layoutRefs = react.useRef({
1784
- notificationsGlobalRef,
1785
- notificationsPageRef
1786
- });
1787
- const hostMessageHandler = react.useCallback(event => {
1788
- if (event.data.eventName === constants.CUSTOM_VIEWS_EVENTS_NAMES.CUSTOM_VIEW_INITIALIZATION) {
1789
- setHostContext(event.data.eventData.context);
1790
- } else {
1791
- console.warn(`CustomViewShell: Unknown received event with name: ${event.data.eventName}`, {
1792
- event
1793
- });
1794
- }
1795
- }, []);
1796
- const handleClose = react.useCallback(() => {
1797
- iFrameCommunicationPort.current?.postMessage({
1798
- origin: window.location.origin,
1799
- source: `${constants.CUSTOM_VIEWS_EVENTS_META.CUSTOM_VIEW_KEY_PREFIX}${hostContext?.customViewConfig.id}`,
1800
- destination: constants.CUSTOM_VIEWS_EVENTS_META.HOST_APPLICATION_CODE,
1801
- eventName: constants.CUSTOM_VIEWS_EVENTS_NAMES.CUSTOM_VIEW_CLOSE,
1802
- eventData: {}
1803
- });
1804
- }, [hostContext?.customViewConfig.id]);
1805
- react.useEffect(() => {
1806
- const bootstrapMessageHandler = event => {
1807
- if ((event.origin === window.location.origin ||
1808
- // event.origin is not defined in test environment
1809
- process.env.NODE_ENV === 'test') && event.data === constants.CUSTOM_VIEWS_EVENTS_NAMES.CUSTOM_VIEW_BOOTSTRAP) {
1810
- iFrameCommunicationPort.current = event.ports[0];
1811
- iFrameCommunicationPort.current.onmessage = hostMessageHandler;
1812
- // Once bootstraped, we don't want to listen for global messages anymore.
1813
- // We will only listen to messages coming through the MessageChannel port.
1814
- window.removeEventListener('message', bootstrapMessageHandler);
1815
- } else {
1816
- console.warn('CustomViewShell: Received an event that is not allowed.', {
1817
- event
1818
- });
1819
- }
1820
- };
1821
- window.addEventListener('message', bootstrapMessageHandler);
1822
-
1823
- // This notifies the custom view loader that the iframe is ready.
1824
- // This is only supported by custom view loader in the host application from v24.x onwards
1825
- window.parent.postMessage({
1826
- origin: window.location.origin,
1827
- eventName: constants.CUSTOM_VIEWS_EVENTS_NAMES.CUSTOM_VIEW_READY
1828
- });
1829
- return () => {
1830
- window.removeEventListener('message', bootstrapMessageHandler);
1831
- };
1832
- }, [hostMessageHandler]);
1833
- react.useEffect(() => {
1834
- // Close the channel when the component unmounts
1835
- return () => {
1836
- iFrameCommunicationPort.current?.close();
1837
- iFrameCommunicationPort.current = undefined;
1838
- };
1839
- }, []);
1840
- if (!hostContext) {
1841
- return jsxRuntime.jsx(ApplicationLoader, {
1842
- showLogo: true
1843
- });
1844
- }
1845
- const hostUrl = process.env.NODE_ENV === 'development' || isLocalProdMode ? window.app.__DEVELOPMENT__?.customViewHostUrl : hostContext.hostUrl;
1846
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
1847
- children: [jsxRuntime.jsx(GlobalStyles, {}), jsxRuntime.jsx(ApplicationShellProvider, {
1848
- environment: window.app,
1849
- applicationMessages: props.applicationMessages,
1850
- apolloClient: props.apolloClient,
1851
- children: _ref => {
1852
- let isAuthenticated = _ref.isAuthenticated;
1853
- if (isAuthenticated) {
1854
- return jsxRuntime.jsx(applicationShellConnectors.CustomViewContextProvider, {
1855
- hostUrl: hostUrl,
1856
- customViewConfig: hostContext.customViewConfig,
1857
- children: jsxRuntime.jsxs(CustomViewShellAuthenticated, {
1858
- dataLocale: hostContext.dataLocale,
1859
- environment: window.app,
1860
- messages: props.applicationMessages,
1861
- projectKey: hostContext.projectKey,
1862
- flags: hostContext.featureFlags,
1863
- customViewConfig: hostContext.customViewConfig,
1864
- children: [jsxRuntime.jsx(CustomViewThemeProvider, {}), jsxRuntime.jsx(applicationComponents.PortalsContainer
1865
- // @ts-ignore
1866
- , {
1867
- ref: layoutRefs
1868
- }), jsxRuntime.jsx(NotificationsContainer, {
1869
- notificationsGlobalRef: notificationsGlobalRef,
1870
- notificationsPageRef: notificationsPageRef
1871
- }), jsxRuntime.jsxs(reactRouterDom.Route, {
1872
- path: `/custom-views/${hostContext.customViewConfig.id}/projects/${hostContext.projectKey}`,
1873
- children: [jsxRuntime.jsx(applicationComponents.ModalPageTopBar, {
1874
- onClose: handleClose,
1875
- hidePathLabel: true
1876
- }), jsxRuntime.jsx(ContentWrapper, {
1877
- children: props.children
1878
- })]
1879
- })]
1880
- })
1881
- });
1882
- }
1883
- return jsxRuntime.jsx(i18n.AsyncLocaleData, {
1884
- locale: browserLocale,
1885
- applicationMessages: props.applicationMessages,
1886
- children: _ref2 => {
1887
- let locale = _ref2.locale,
1888
- messages = _ref2.messages;
1889
- return jsxRuntime.jsx(ConfigureIntlProvider, {
1890
- locale: locale,
1891
- messages: messages,
1892
- children: jsxRuntime.jsx(applicationComponents.PageUnauthorized, {})
1893
- });
1894
- }
1895
- });
1896
- }
1897
- })]
1898
- });
1899
- }
1900
- const CustomViewShellWrapper = props => {
1901
- if ((process.env.NODE_ENV === 'development' || isLocalProdMode) && !props.disableDevHost) {
1902
- return jsxRuntime.jsx(StrictModeEnablement, {
1903
- enableReactStrictMode: props.enableReactStrictMode,
1904
- children: jsxRuntime.jsx(react.Suspense, {
1905
- fallback: jsxRuntime.jsx(ApplicationLoader, {}),
1906
- children: jsxRuntime.jsx(CustomViewDevHost, {
1907
- applicationMessages: props.applicationMessages,
1908
- children: jsxRuntime.jsx(CustomViewShell, {
1909
- apolloClient: props.apolloClient,
1910
- applicationMessages: props.applicationMessages,
1911
- children: props.children
1912
- })
1913
- })
1914
- })
1915
- });
1916
- }
1917
- return jsxRuntime.jsx(StrictModeEnablement, {
1918
- enableReactStrictMode: props.enableReactStrictMode,
1919
- children: jsxRuntime.jsx(CustomViewShell, {
1920
- apolloClient: props.apolloClient,
1921
- applicationMessages: props.applicationMessages,
1922
- children: props.children
1923
- })
1924
- });
1925
- };
1926
-
1927
- const _excluded = ["shouldCleanUpOnUnmount"];
1928
- const InjectReducers = _ref => {
1929
- let _ref$shouldCleanUpOnU = _ref.shouldCleanUpOnUnmount,
1930
- shouldCleanUpOnUnmount = _ref$shouldCleanUpOnU === void 0 ? true : _ref$shouldCleanUpOnU,
1931
- props = _objectWithoutProperties(_ref, _excluded);
1932
- const _useState = react.useState(false),
1933
- _useState2 = _slicedToArray(_useState, 2),
1934
- areReducersInjected = _useState2[0],
1935
- setAreReducersInjected = _useState2[1];
1936
- const store = reactRedux.useStore();
1937
- react.useEffect(() => {
1938
- store.injectReducers({
1939
- id: props.id,
1940
- reducers: props.reducers
1941
- });
1942
- setAreReducersInjected(true);
1943
- return () => {
1944
- if (shouldCleanUpOnUnmount) {
1945
- store.removeReducers({
1946
- id: props.id
1947
- });
1948
- }
1949
- };
1950
- }, [props.id, props.reducers, shouldCleanUpOnUnmount, store]);
1951
-
1952
- // Render children only when the plugin reducers have been injected
1953
- if (areReducersInjected) return jsxRuntime.jsx(jsxRuntime.Fragment, {
1954
- children: props.children
1955
- });
1956
- return null;
1957
- };
1958
- InjectReducers.displayName = 'InjectReducers';
1959
-
1960
- const errorMessageIgnoreList = [/ResizeObserver loop (limit exceeded|completed with undelivered notifications)/i];
1961
-
1962
- // Ensure to initialize Sentry as soon as possible, so that we have the chance
1963
- // of catching possible errors.
1964
- sentry.boot();
1965
- const makeErrorToCapture = error => {
1966
- if (error instanceof Error) return error;
1967
- if (error instanceof ErrorEvent) return new Error(error.message);
1968
- return new Error(_JSON$stringify__default["default"](error.reason || 'Unhandled rejection without a reason'));
1969
- };
1970
- const getErrorMessage = error => {
1971
- if (typeof error === 'string') return error;
1972
- const errorToCapture = makeErrorToCapture(error);
1973
- return errorToCapture.message || errorToCapture.name;
1974
- };
1975
- const shouldErrorBeTracked = error => {
1976
- const errorMessage = getErrorMessage(error);
1977
- return !_someInstanceProperty__default["default"](errorMessageIgnoreList).call(errorMessageIgnoreList, match => match.test(errorMessage));
1978
- };
1979
- function setupGlobalErrorListener() {
1980
- // Capture unhandled errors generated from rejected Promises.
1981
- //
1982
- // http://www.2ality.com/2016/04/unhandled-rejections.html
1983
- // https://docs.getsentry.com/hosted/clients/javascript/usage/#promises
1984
- //
1985
- // Note: this currently works only in Chrome, and it might not be needed.
1986
- // We just keep it here as a nice-to-have thing.
1987
- window.addEventListener('unhandledrejection', event => {
1988
- if (process.env.NODE_ENV !== 'production')
1989
- // eslint-disable-next-line no-console
1990
- console.warn('An uncaught promise has been rejected and not properly ' + 'handled. This is most likely a bug in the software. Please ensure ' + 'that the promise is correctly handled.');
1991
- if (shouldErrorBeTracked(event)) {
1992
- const errorId = sentry.reportErrorToSentry(event);
1993
- index.internalReduxStore.dispatch(actionsGlobal.showUnexpectedErrorNotification({
1994
- errorId
1995
- }));
1996
- }
1997
- });
1998
-
1999
- // Capture normal global errors coming from non Promise code.
2000
- window.addEventListener('error', errorEvent => {
2001
- if (shouldErrorBeTracked(errorEvent)) {
2002
- const errorId = sentry.reportErrorToSentry(errorEvent);
2003
- index.internalReduxStore.dispatch(actionsGlobal.showUnexpectedErrorNotification({
2004
- errorId
2005
- }));
2006
- }
2007
- });
2008
- }
2009
-
2010
- function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
2011
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
2012
-
2013
- /**
2014
- * The route path to match. Usually it starts with `/:projectKey/my-entry-point`.
2015
- */
2016
-
2017
- const makeRoute = (routePath, routeOptions) => {
2018
- const getUrl = (nextParams, nextQueryParams) => {
2019
- const baseUrl = reactRouterDom.generatePath(routePath, _objectSpread(_objectSpread({}, routeOptions.params), nextParams));
2020
- if (nextQueryParams) {
2021
- return `${baseUrl}?${nextQueryParams.toString()}`;
2022
- }
2023
- return baseUrl;
2024
- };
2025
- const go = (nextParams, nextQueryParams) => {
2026
- routeOptions.goTo(getUrl(nextParams, nextQueryParams));
2027
- };
2028
- return {
2029
- path: routePath,
2030
- getUrl,
2031
- go
2032
- };
2033
- };
2034
- function useRoutesCreator() {
2035
- const _useRouteMatch = reactRouterDom.useRouteMatch(),
2036
- params = _useRouteMatch.params;
2037
- const _useHistory = reactRouterDom.useHistory(),
2038
- goTo = _useHistory.push,
2039
- location = _useHistory.location;
2040
- const createRoute = routePath => makeRoute(routePath, {
2041
- goTo,
2042
- params,
2043
- location
2044
- });
2045
- return {
2046
- createRoute
2047
- };
2048
- }
2049
-
2050
- exports.ApplicationLoader = ApplicationLoader;
2051
- exports.ApplicationPageTitle = ApplicationPageTitle;
2052
- exports.ApplicationShell = ApplicationShell;
2053
- exports.ApplicationShellProvider = ApplicationShellProvider;
2054
- exports.ConfigureIntlProvider = ConfigureIntlProvider;
2055
- exports.CustomViewShellWrapper = CustomViewShellWrapper;
2056
- exports.ErrorApologizer = ErrorApologizer;
2057
- exports.ErrorBoundary = ErrorBoundary;
2058
- exports.FetchProject = FetchProject;
2059
- exports.FetchUser = FetchUser;
2060
- exports.InjectReducers = InjectReducers;
2061
- exports.PERFORMANCE_MARKS = PERFORMANCE_MARKS;
2062
- exports.ProjectSwitcher = ProjectSwitcher;
2063
- exports.ProtectedRoute = ProtectedRoute;
2064
- exports.REQUESTS_IN_FLIGHT_LOADER_DOM_ID = REQUESTS_IN_FLIGHT_LOADER_DOM_ID;
2065
- exports.RedirectToLogin = RedirectToLogin;
2066
- exports.RedirectToLogout = RedirectToLogout;
2067
- exports.RedirectToProjectCreate = RedirectToProjectCreate;
2068
- exports.SetupFlopFlipProvider = SetupFlopFlipProvider;
2069
- exports.SuspendedProtectedRoute = SuspendedProtectedRoute;
2070
- exports.SuspendedRoute = SuspendedRoute;
2071
- exports.getBrowserLocale = getBrowserLocale;
2072
- exports.getPreviousProjectKey = getPreviousProjectKey;
2073
- exports.setupGlobalErrorListener = setupGlobalErrorListener;
2074
- exports.useRoutesCreator = useRoutesCreator;
2075
- exports.version = version;