@commercetools-frontend/application-shell 21.23.5 → 21.23.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{application-entry-point-45dd5259.esm.js → application-entry-point-1ae5f4e8.esm.js} +1 -1
- package/dist/{application-entry-point-4d14f4f2.cjs.dev.js → application-entry-point-70fe25e2.cjs.dev.js} +1 -1
- package/dist/{application-entry-point-471abc51.cjs.prod.js → application-entry-point-d9033fe0.cjs.prod.js} +1 -1
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +2 -2
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +2 -2
- package/dist/commercetools-frontend-application-shell.esm.js +2 -2
- package/dist/declarations/src/components/app-bar/app-bar.d.ts +1 -1
- package/dist/declarations/src/components/application-entry-point/application-entry-point.d.ts +1 -1
- package/dist/declarations/src/components/application-loader/application-loader.d.ts +1 -1
- package/dist/declarations/src/components/application-page-title/application-page-title.d.ts +1 -1
- package/dist/declarations/src/components/application-shell/application-shell.d.ts +1 -1
- package/dist/declarations/src/components/application-shell/redirect-to-logout.d.ts +2 -2
- package/dist/declarations/src/components/application-shell-provider/application-shell-provider.d.ts +1 -1
- package/dist/declarations/src/components/application-shell-provider/use-coerced-environment-values.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/am-i-logged-in.d.ts +2 -2
- package/dist/declarations/src/components/authenticated/authenticated.d.ts +2 -2
- package/dist/declarations/src/components/authenticated/oidc-callback-error-page.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/oidc-callback.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/types.d.ts +1 -1
- package/dist/declarations/src/components/back-to-project/back-to-project.d.ts +1 -1
- package/dist/declarations/src/components/configure-intl-provider/configure-intl-provider.d.ts +1 -1
- package/dist/declarations/src/components/error-boundary/error-boundary.d.ts +2 -2
- package/dist/declarations/src/components/fetch-project/fetch-project.d.ts +2 -2
- package/dist/declarations/src/components/fetch-user/fetch-user.d.ts +2 -2
- package/dist/declarations/src/components/gtm-application-tracker/gtm-application-tracker.d.ts +1 -1
- package/dist/declarations/src/components/gtm-booter/gtm-booter.d.ts +2 -2
- package/dist/declarations/src/components/gtm-user-tracker/gtm-user-tracker.d.ts +2 -2
- package/dist/declarations/src/components/inject-reducers/inject-reducers.d.ts +1 -1
- package/dist/declarations/src/components/loading-placeholder/loading-placeholder.d.ts +1 -1
- package/dist/declarations/src/components/locale-switcher/locale-switcher.d.ts +2 -2
- package/dist/declarations/src/components/navbar/navbar.d.ts +2 -2
- package/dist/declarations/src/components/navbar/use-navbar-state-manager.d.ts +1 -1
- package/dist/declarations/src/components/project-container/project-container.d.ts +2 -2
- package/dist/declarations/src/components/project-data-locale/project-data-locale.d.ts +2 -2
- package/dist/declarations/src/components/project-suspended/project-suspended.d.ts +1 -1
- package/dist/declarations/src/components/project-switcher/project-switcher.d.ts +2 -2
- package/dist/declarations/src/components/quick-access/butler/butler.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/butler-command/butler-command.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/create-commands.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/index.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/quick-access.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/sub-commands.d.ts +2 -2
- package/dist/declarations/src/components/quick-access/types.d.ts +9 -9
- package/dist/declarations/src/components/redirector/redirector.d.ts +3 -3
- package/dist/declarations/src/components/requests-in-flight-loader/types.d.ts +3 -3
- package/dist/declarations/src/components/setup-flop-flip-provider/setup-flop-flip-provider.d.ts +1 -1
- package/dist/declarations/src/components/user-settings-menu/user-settings-menu.d.ts +2 -2
- package/dist/declarations/src/configure-apollo.d.ts +1 -1
- package/dist/declarations/src/configure-store.d.ts +1 -1
- package/dist/declarations/src/export-types.d.ts +7 -7
- package/dist/declarations/src/hooks/apollo-hooks/apollo-hooks.d.ts +5 -5
- package/dist/declarations/src/hooks/use-applications-menu/use-applications-menu.d.ts +3 -3
- package/dist/declarations/src/test-utils/test-utils.d.ts +14 -14
- package/dist/declarations/src/types/generated/ctp.d.ts +1744 -1744
- package/dist/declarations/src/types/generated/mc.d.ts +103 -103
- package/dist/declarations/src/types/generated/proxy.d.ts +17 -17
- package/dist/declarations/src/types/generated/settings.d.ts +248 -248
- package/dist/declarations/src/utils/apollo-context.d.ts +1 -1
- package/dist/declarations/src/utils/gtm.d.ts +3 -3
- package/dist/declarations/src/utils/http-client.d.ts +9 -9
- package/dist/declarations/src/utils/oidc.d.ts +1 -1
- package/dist/{index-e0e0224a.esm.js → index-4e02fc7d.esm.js} +12 -12
- package/dist/{index-5d391507.cjs.prod.js → index-5121d456.cjs.prod.js} +6 -6
- package/dist/{index-25e86c48.cjs.dev.js → index-b670dcc9.cjs.dev.js} +12 -12
- package/dist/{project-expired-a61bebe0.cjs.dev.js → project-expired-1d22bd87.cjs.dev.js} +3 -3
- package/dist/{project-expired-7183b5d4.esm.js → project-expired-5f0a4280.esm.js} +3 -3
- package/dist/{project-expired-ed9c527e.cjs.prod.js → project-expired-be0779a1.cjs.prod.js} +3 -3
- package/dist/{project-not-found-82e7cb1a.cjs.dev.js → project-not-found-24271e19.cjs.dev.js} +3 -3
- package/dist/{project-not-found-07570fea.cjs.prod.js → project-not-found-38edd86f.cjs.prod.js} +3 -3
- package/dist/{project-not-found-9376eb3f.esm.js → project-not-found-bbe7f3e3.esm.js} +3 -3
- package/dist/{project-not-initialized-8d7d0061.esm.js → project-not-initialized-1baffdba.esm.js} +3 -3
- package/dist/{project-not-initialized-adf69ba8.cjs.prod.js → project-not-initialized-5421145e.cjs.prod.js} +3 -3
- package/dist/{project-not-initialized-afa2e7e7.cjs.dev.js → project-not-initialized-e216c26a.cjs.dev.js} +3 -3
- package/dist/{project-suspended-8f1597c9.cjs.prod.js → project-suspended-7b788e80.cjs.prod.js} +3 -3
- package/dist/{project-suspended-747482fb.esm.js → project-suspended-a476b2ea.esm.js} +3 -3
- package/dist/{project-suspended-8083e172.cjs.dev.js → project-suspended-b912cf26.cjs.dev.js} +3 -3
- package/dist/{quick-access-4b551dde.cjs.dev.js → quick-access-85d0adc0.cjs.dev.js} +2 -2
- package/dist/{quick-access-6cc8835b.cjs.prod.js → quick-access-96835213.cjs.prod.js} +2 -2
- package/dist/{quick-access-268184b7.esm.js → quick-access-da0a782e.esm.js} +2 -2
- package/dist/{service-page-project-switcher-9456a21c.cjs.prod.js → service-page-project-switcher-28c3b007.cjs.prod.js} +1 -1
- package/dist/{service-page-project-switcher-b2a0465e.cjs.dev.js → service-page-project-switcher-59207cc6.cjs.dev.js} +1 -1
- package/dist/{service-page-project-switcher-585e015e.esm.js → service-page-project-switcher-95663d25.esm.js} +1 -1
- package/package.json +47 -47
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +1 -1
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +1 -1
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as getMcApiUrl, l as logger, a as getActiveProjectKey, r as removeActiveProjectKey, s as setActiveProjectKey, b as getSessionScope, c as location, d as getSessionState, e as setActiveSession, f as createApolloClient, i as internalReduxStore, h as setCachedApolloClient, v as version, R as REQUESTS_IN_FLIGHT_LOADER_DOM_ID, u as useIsServedByProxy, A as ApplicationEntryPoint, j as setSessionScope, k as setSessionState, m as clearSession, n as selectProjectKeyFromUrl, o as RequestsInFlightLoader, p as RouteCatchAll } from './application-entry-point-
|
|
1
|
+
import { g as getMcApiUrl, l as logger, a as getActiveProjectKey, r as removeActiveProjectKey, s as setActiveProjectKey, b as getSessionScope, c as location, d as getSessionState, e as setActiveSession, f as createApolloClient, i as internalReduxStore, h as setCachedApolloClient, v as version, R as REQUESTS_IN_FLIGHT_LOADER_DOM_ID, u as useIsServedByProxy, A as ApplicationEntryPoint, j as setSessionScope, k as setSessionState, m as clearSession, n as selectProjectKeyFromUrl, o as RequestsInFlightLoader, p as RouteCatchAll } from './application-entry-point-1ae5f4e8.esm.js';
|
|
2
2
|
import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
|
|
3
3
|
import _styled from '@emotion/styled/base';
|
|
4
4
|
import _pt from 'prop-types';
|
|
@@ -2498,19 +2498,19 @@ LocaleSwitcher.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
2498
2498
|
} : {};
|
|
2499
2499
|
|
|
2500
2500
|
var ProjectNotFound = /*#__PURE__*/lazy(function () {
|
|
2501
|
-
return import('./project-not-found-
|
|
2501
|
+
return import('./project-not-found-bbe7f3e3.esm.js'
|
|
2502
2502
|
/* webpackChunkName: "project-not-found" */
|
|
2503
2503
|
);
|
|
2504
2504
|
});
|
|
2505
2505
|
|
|
2506
2506
|
var ProjectExpired = /*#__PURE__*/lazy(function () {
|
|
2507
|
-
return import('./project-expired-
|
|
2507
|
+
return import('./project-expired-5f0a4280.esm.js'
|
|
2508
2508
|
/* webpackChunkName: "project-expired" */
|
|
2509
2509
|
);
|
|
2510
2510
|
});
|
|
2511
2511
|
|
|
2512
2512
|
var ProjectNotInitialized = /*#__PURE__*/lazy(function () {
|
|
2513
|
-
return import('./project-not-initialized-
|
|
2513
|
+
return import('./project-not-initialized-1baffdba.esm.js'
|
|
2514
2514
|
/* webpackChunkName: "project-not-initialized" */
|
|
2515
2515
|
);
|
|
2516
2516
|
});
|
|
@@ -2557,7 +2557,7 @@ var RedirectToProjectCreate = function RedirectToProjectCreate() {
|
|
|
2557
2557
|
RedirectToProjectCreate.displayName = 'RedirectToProjectCreate';
|
|
2558
2558
|
|
|
2559
2559
|
var ProjectSuspended = /*#__PURE__*/lazy(function () {
|
|
2560
|
-
return import('./project-suspended-
|
|
2560
|
+
return import('./project-suspended-a476b2ea.esm.js'
|
|
2561
2561
|
/* webpackChunkName: "project-suspended" */
|
|
2562
2562
|
);
|
|
2563
2563
|
});
|
|
@@ -4002,7 +4002,7 @@ var pimIndexerStates = {
|
|
|
4002
4002
|
};
|
|
4003
4003
|
|
|
4004
4004
|
var QuickAccess = /*#__PURE__*/lazy(function () {
|
|
4005
|
-
return import('./quick-access-
|
|
4005
|
+
return import('./quick-access-da0a782e.esm.js'
|
|
4006
4006
|
/* webpackChunkName: "quick-access" */
|
|
4007
4007
|
);
|
|
4008
4008
|
});
|
|
@@ -4313,7 +4313,7 @@ var MainContainer = /*#__PURE__*/_styled("main", process.env.NODE_ENV === "produ
|
|
|
4313
4313
|
} : {
|
|
4314
4314
|
name: "1rdshd",
|
|
4315
4315
|
styles: "grid-column:2;grid-row:3;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative",
|
|
4316
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtSHdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4316
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtSHdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VmVyc2lvblRyYWNrZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZSA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcEJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmwgPyBESU1FTlNJT05TLm5hdk1lbnUgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRElNRU5TSU9OUy5uYXZNZW51RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpYyBwYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuUmVzdHJpY3RlZEFwcGxpY2F0aW9uLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbic7XG5cbmNvbnN0IEFwcGxpY2F0aW9uU2hlbGwgPSA8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PihcbiAgcHJvcHM6IFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcm9wcy5vblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/Lih7XG4gICAgICBkaXNwYXRjaDogaW50ZXJuYWxSZWR1eFN0b3JlLmRpc3BhdGNoLFxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pOyAvLyA8LS0gcnVuIG9ubHkgb25jZSwgd2hlbiBjb21wb25lbnQgbW91bnRzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4317
4317
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4318
4318
|
});
|
|
4319
4319
|
|
|
@@ -4323,7 +4323,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
4323
4323
|
} : {
|
|
4324
4324
|
name: "199a1u7-RestrictedApplication",
|
|
4325
4325
|
styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;};label:RestrictedApplication;",
|
|
4326
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxWnNDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4326
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxWnNDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VmVyc2lvblRyYWNrZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZSA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcEJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmwgPyBESU1FTlNJT05TLm5hdk1lbnUgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRElNRU5TSU9OUy5uYXZNZW51RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpYyBwYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuUmVzdHJpY3RlZEFwcGxpY2F0aW9uLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbic7XG5cbmNvbnN0IEFwcGxpY2F0aW9uU2hlbGwgPSA8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PihcbiAgcHJvcHM6IFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcm9wcy5vblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/Lih7XG4gICAgICBkaXNwYXRjaDogaW50ZXJuYWxSZWR1eFN0b3JlLmRpc3BhdGNoLFxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pOyAvLyA8LS0gcnVuIG9ubHkgb25jZSwgd2hlbiBjb21wb25lbnQgbW91bnRzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4327
4327
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4328
4328
|
};
|
|
4329
4329
|
|
|
@@ -4333,7 +4333,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
|
4333
4333
|
} : {
|
|
4334
4334
|
name: "lzvzwe-RestrictedApplication",
|
|
4335
4335
|
styles: "position:relative;grid-row:3;display:flex;flex-direction:column;label:RestrictedApplication;",
|
|
4336
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrVmtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4336
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrVmtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VmVyc2lvblRyYWNrZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZSA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcEJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmwgPyBESU1FTlNJT05TLm5hdk1lbnUgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRElNRU5TSU9OUy5uYXZNZW51RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpYyBwYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuUmVzdHJpY3RlZEFwcGxpY2F0aW9uLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbic7XG5cbmNvbnN0IEFwcGxpY2F0aW9uU2hlbGwgPSA8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PihcbiAgcHJvcHM6IFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcm9wcy5vblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/Lih7XG4gICAgICBkaXNwYXRjaDogaW50ZXJuYWxSZWR1eFN0b3JlLmRpc3BhdGNoLFxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pOyAvLyA8LS0gcnVuIG9ubHkgb25jZSwgd2hlbiBjb21wb25lbnQgbW91bnRzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4337
4337
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4338
4338
|
};
|
|
4339
4339
|
|
|
@@ -4343,7 +4343,7 @@ var _ref3 = process.env.NODE_ENV === "production" ? {
|
|
|
4343
4343
|
} : {
|
|
4344
4344
|
name: "16holxm-RestrictedApplication",
|
|
4345
4345
|
styles: "grid-row:2;grid-column:1/3;label:RestrictedApplication;",
|
|
4346
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzVWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4346
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzVWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VmVyc2lvblRyYWNrZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZSA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcEJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmwgPyBESU1FTlNJT05TLm5hdk1lbnUgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRElNRU5TSU9OUy5uYXZNZW51RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpYyBwYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuUmVzdHJpY3RlZEFwcGxpY2F0aW9uLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbic7XG5cbmNvbnN0IEFwcGxpY2F0aW9uU2hlbGwgPSA8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PihcbiAgcHJvcHM6IFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcm9wcy5vblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/Lih7XG4gICAgICBkaXNwYXRjaDogaW50ZXJuYWxSZWR1eFN0b3JlLmRpc3BhdGNoLFxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pOyAvLyA8LS0gcnVuIG9ubHkgb25jZSwgd2hlbiBjb21wb25lbnQgbW91bnRzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4347
4347
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4348
4348
|
};
|
|
4349
4349
|
|
|
@@ -4353,7 +4353,7 @@ var _ref4 = process.env.NODE_ENV === "production" ? {
|
|
|
4353
4353
|
} : {
|
|
4354
4354
|
name: "1u7ux6j-RestrictedApplication",
|
|
4355
4355
|
styles: "grid-row:1;grid-column:1/3;label:RestrictedApplication;",
|
|
4356
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2UWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4356
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2UWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VmVyc2lvblRyYWNrZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZSA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcEJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmwgPyBESU1FTlNJT05TLm5hdk1lbnUgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRElNRU5TSU9OUy5uYXZNZW51RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpYyBwYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuUmVzdHJpY3RlZEFwcGxpY2F0aW9uLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbic7XG5cbmNvbnN0IEFwcGxpY2F0aW9uU2hlbGwgPSA8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PihcbiAgcHJvcHM6IFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcm9wcy5vblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/Lih7XG4gICAgICBkaXNwYXRjaDogaW50ZXJuYWxSZWR1eFN0b3JlLmRpc3BhdGNoLFxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pOyAvLyA8LS0gcnVuIG9ubHkgb25jZSwgd2hlbiBjb21wb25lbnQgbW91bnRzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4357
4357
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4358
4358
|
};
|
|
4359
4359
|
|
|
@@ -4448,7 +4448,7 @@ var RestrictedApplication = function RestrictedApplication(props) {
|
|
|
4448
4448
|
projectKey: projectKeyFromUrl,
|
|
4449
4449
|
userBusinessRole: (_user$businessRole = user === null || user === void 0 ? void 0 : user.businessRole) !== null && _user$businessRole !== void 0 ? _user$businessRole : undefined
|
|
4450
4450
|
}), jsxs("div", {
|
|
4451
|
-
css: /*#__PURE__*/css("height:100vh;display:grid;grid-template-rows:auto ", DIMENSIONS.header, " 1fr;grid-template-columns:auto 1fr;" + (process.env.NODE_ENV === "production" ? "" : ";label:RestrictedApplication;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrUWdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */"),
|
|
4451
|
+
css: /*#__PURE__*/css("height:100vh;display:grid;grid-template-rows:auto ", DIMENSIONS.header, " 1fr;grid-template-columns:auto 1fr;" + (process.env.NODE_ENV === "production" ? "" : ";label:RestrictedApplication;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrUWdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VmVyc2lvblRyYWNrZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZSA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICR7RElNRU5TSU9OUy5oZWFkZXJ9IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcEJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21Vcmw9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmwgPyBESU1FTlNJT05TLm5hdk1lbnUgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRElNRU5TSU9OUy5uYXZNZW51RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hpbGRyZW4sIHdoaWNoIGlzIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpYyBwYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgIDwvU2V0dXBGbG9wRmxpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgPC9GZXRjaFVzZXI+XG4gICk7XG59O1xuUmVzdHJpY3RlZEFwcGxpY2F0aW9uLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbic7XG5cbmNvbnN0IEFwcGxpY2F0aW9uU2hlbGwgPSA8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PihcbiAgcHJvcHM6IFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcm9wcy5vblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/Lih7XG4gICAgICBkaXNwYXRjaDogaW50ZXJuYWxSZWR1eFN0b3JlLmRpc3BhdGNoLFxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pOyAvLyA8LS0gcnVuIG9ubHkgb25jZSwgd2hlbiBjb21wb25lbnQgbW91bnRzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */"),
|
|
4452
4452
|
children: [jsx("div", {
|
|
4453
4453
|
ref: notificationsGlobalRef,
|
|
4454
4454
|
role: "region",
|