@onepercentio/one-ui 1.3.2 → 1.3.4
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/.github/workflows/release-browser-bundle.yml +76 -0
- package/README.md +23 -0
- package/dist/assets/img/svg/checkbox.svg +3 -0
- package/dist/assets/styles/index.scss +2 -0
- package/dist/assets/styles/mixins.scss +15 -0
- package/dist/assets/styles/variables.scss +49 -0
- package/dist/components/AdaptiveButton/AdaptiveButton.js +32 -0
- package/dist/components/AdaptiveButton/AdaptiveButton.module.scss +7 -0
- package/dist/components/AdaptiveButton/index.js +27 -0
- package/dist/components/AdaptiveContainer/AdaptiveContainer.js +152 -0
- package/dist/components/AdaptiveContainer/AdaptiveContainer.module.scss +53 -0
- package/dist/components/AdaptiveContainer/index.js +27 -0
- package/dist/components/AdaptiveDialog/AdaptiveDialog.js +81 -0
- package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +145 -0
- package/dist/components/AdaptiveDialog/index.js +27 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +77 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.module.scss +49 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
- package/dist/components/AdaptiveSidebar/index.js +27 -0
- package/dist/components/AnchoredTooltip/AnchoredTooltip.js +168 -0
- package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +64 -0
- package/dist/components/AnchoredTooltip/index.js +27 -0
- package/dist/components/AnimatedEntrance/AnimatedEntrance.js +166 -0
- package/dist/components/AnimatedEntrance/AnimatedEntrance.module.scss +108 -0
- package/dist/components/AnimatedEntrance/index.js +27 -0
- package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +95 -0
- package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.module.scss +22 -0
- package/dist/components/AsyncTriggerContainer/index.js +27 -0
- package/dist/components/AsyncWrapper/AsyncWrapper.js +42 -0
- package/dist/components/AsyncWrapper/index.js +27 -0
- package/dist/components/Avatar/Avatar.js +40 -0
- package/dist/components/Avatar/Avatar.module.scss +22 -0
- package/dist/components/Avatar/index.js +27 -0
- package/dist/components/BucketFill/BucketFill.js +56 -0
- package/dist/components/BucketFill/BucketFill.module.scss +36 -0
- package/dist/components/BucketFill/index.js +27 -0
- package/dist/components/Button/Button.js +39 -0
- package/dist/components/Button/Button.module.scss +45 -0
- package/dist/components/Button/index.js +27 -0
- package/dist/components/Card/Card.js +22 -0
- package/dist/components/Card/Card.module.scss +12 -0
- package/dist/components/Card/index.js +27 -0
- package/dist/components/Chart/Chart.js +27 -0
- package/dist/components/Chart/Chart.logic.js +14 -0
- package/dist/components/Chart/Chart.module.scss +58 -0
- package/dist/components/Chart/Chart.types.js +6 -0
- package/dist/components/Chart/Chart.view.js +184 -0
- package/dist/components/Chart/index.js +27 -0
- package/dist/components/CheckBox/CheckBox.js +52 -0
- package/dist/components/CheckBox/CheckBox.module.scss +36 -0
- package/dist/components/CheckBox/index.js +27 -0
- package/dist/components/CodeInput/CodeInput.js +84 -0
- package/dist/components/CodeInput/CodeInput.module.scss +5 -0
- package/dist/components/CodeInput/index.js +27 -0
- package/dist/components/Collapsable/Collapsable.js +186 -0
- package/dist/components/Collapsable/Collapsable.module.scss +42 -0
- package/dist/components/Collapsable/index.js +27 -0
- package/dist/components/Countdown/Countdown.js +83 -0
- package/dist/components/Countdown/index.js +27 -0
- package/dist/components/CurrencyInput/CurrencyInput.hook.js +28 -0
- package/dist/components/CurrencyInput/CurrencyInput.js +54 -0
- package/dist/components/CurrencyInput/index.js +27 -0
- package/dist/components/Divider/Divider.js +21 -0
- package/dist/components/Divider/Divider.module.scss +7 -0
- package/dist/components/Divider/index.js +27 -0
- package/dist/components/EmailInput/EmailInput.js +48 -0
- package/dist/components/EmailInput/EmailInput.module.scss +0 -0
- package/dist/components/EmailInput/index.js +27 -0
- package/dist/components/FadeIn/FadeIn.js +64 -0
- package/dist/components/FadeIn/FadeIn.module.scss +9 -0
- package/dist/components/FadeIn/index.js +27 -0
- package/dist/components/FileInput/FileInput.js +53 -0
- package/dist/components/FileInput/FileInput.module.scss +6 -0
- package/dist/components/FileInput/View/BigFactory/BigFactory.js +54 -0
- package/dist/components/FileInput/View/BigFactory/BigFactory.module.scss +20 -0
- package/dist/components/FileInput/View/BigFactory/index.js +27 -0
- package/dist/components/FileInput/View/Compact/Compact.js +120 -0
- package/dist/components/FileInput/View/Compact/Compact.module.scss +68 -0
- package/dist/components/FileInput/View/Compact/index.js +27 -0
- package/dist/components/FileInput/View/View.types.js +6 -0
- package/dist/components/FileInput/index.js +27 -0
- package/dist/components/FlowController/FlowController.js +66 -0
- package/dist/components/FlowController/FlowController.module.scss +47 -0
- package/dist/components/FlowController/index.js +27 -0
- package/dist/components/Form/Form.hook.js +234 -0
- package/dist/components/Form/Form.js +115 -0
- package/dist/components/Form/Form.module.scss +0 -0
- package/dist/components/Form/Form.types.js +40 -0
- package/dist/components/Form/FormField/Extensions/DateField/DateField.js +75 -0
- package/dist/components/Form/FormField/Extensions/DateField/DateField.module.scss +0 -0
- package/dist/components/Form/FormField/Extensions/DateField/index.js +27 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +91 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/index.js +27 -0
- package/dist/components/Form/FormField/FormField.js +296 -0
- package/dist/components/Form/FormField/FormField.types.js +12 -0
- package/dist/components/Form/FormField/index.js +27 -0
- package/dist/components/Form/index.js +27 -0
- package/dist/components/Freeze/Freeze.js +18 -0
- package/dist/components/Freeze/index.js +27 -0
- package/dist/components/HSForms/HSForms.js +55 -0
- package/dist/components/HSForms/index.js +27 -0
- package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +25 -0
- package/dist/components/HeaderCloseBtn/HeaderCloseBtn.module.scss +44 -0
- package/dist/components/HeaderCloseBtn/index.js +27 -0
- package/dist/components/InfinityScroll/InfinityScroll.js +128 -0
- package/dist/components/InfinityScroll/InfinityScroll.module.scss +30 -0
- package/dist/components/InfinityScroll/index.js +27 -0
- package/dist/components/Input/Input.js +110 -0
- package/dist/components/Input/Input.module.scss +31 -0
- package/dist/components/Input/index.js +27 -0
- package/dist/components/InstantCounter/InstantCounter.js +55 -0
- package/dist/components/InstantCounter/index.js +27 -0
- package/dist/components/LavaLamp/LavaLamp.data.js +89 -0
- package/dist/components/LavaLamp/LavaLamp.js +125 -0
- package/dist/components/LavaLamp/LavaLamp.module.scss +26 -0
- package/dist/components/LavaLamp/index.js +27 -0
- package/dist/components/LavaLamp/v2/LavaLamp.js +154 -0
- package/dist/components/LavaLamp/v2/LavaLamp.module.scss +23 -0
- package/dist/components/LinkToId/LinkToId.js +45 -0
- package/dist/components/LinkToId/LinkToId.module.scss +4 -0
- package/dist/components/LinkToId/index.js +27 -0
- package/dist/components/Loader/Loader.js +27 -0
- package/dist/components/Loader/Loader.module.scss +40 -0
- package/dist/components/Loader/index.js +27 -0
- package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +36 -0
- package/dist/components/LoaderDotsIndicator/index.js +27 -0
- package/dist/components/LoopableVideo/LoopableVideo.js +41 -0
- package/dist/components/LoopableVideo/index.js +27 -0
- package/dist/components/MainGrid/MainGrid.js +55 -0
- package/dist/components/MainGrid/MainGrid.module.scss +28 -0
- package/dist/components/MainGrid/index.js +27 -0
- package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +32 -0
- package/dist/components/MutableHamburgerButton/MutableHamburgerButton.module.scss +220 -0
- package/dist/components/MutableHamburgerButton/index.js +27 -0
- package/dist/components/Notification/Notification.js +24 -0
- package/dist/components/Notification/Notification.module.scss +25 -0
- package/dist/components/Notification/index.js +27 -0
- package/dist/components/NumberInput/NumberInput.js +50 -0
- package/dist/components/NumberInput/index.js +27 -0
- package/dist/components/OrderableList/OrderableList.js +439 -0
- package/dist/components/OrderableList/OrderableList.module.scss +98 -0
- package/dist/components/OrderableList/index.js +27 -0
- package/dist/components/PaginationIndicator/PaginationIndicator.js +261 -0
- package/dist/components/PaginationIndicator/index.js +27 -0
- package/dist/components/Parallax/Parallax.js +169 -0
- package/dist/components/Parallax/Parallax.module.scss +28 -0
- package/dist/components/Parallax/index.js +27 -0
- package/dist/components/Parallax/math/helpers.js +134 -0
- package/dist/components/PasswordInput/PasswordInput.js +97 -0
- package/dist/components/PasswordInput/PasswordInput.module.scss +17 -0
- package/dist/components/PasswordInput/index.js +27 -0
- package/dist/components/PingPongText/PingPongText.js +76 -0
- package/dist/components/PingPongText/PingPongText.module.scss +4 -0
- package/dist/components/PingPongText/index.js +27 -0
- package/dist/components/PixelatedScan/PixelatedScan.js +139 -0
- package/dist/components/PixelatedScan/PixelatedScan.module.scss +86 -0
- package/dist/components/PixelatedScan/index.js +27 -0
- package/dist/components/Portal/Portal.js +62 -0
- package/dist/components/Portal/Portal.module.scss +3 -0
- package/dist/components/Portal/index.js +27 -0
- package/dist/components/ProgressBar/ProgressBar.js +113 -0
- package/dist/components/ProgressBar/ProgressBar.module.scss +44 -0
- package/dist/components/ProgressBar/index.js +27 -0
- package/dist/components/ProgressTexts/ProgressTexts.js +52 -0
- package/dist/components/ProgressTexts/ProgressTexts.module.scss +37 -0
- package/dist/components/ProgressTexts/index.js +27 -0
- package/dist/components/Radio/Radio.js +53 -0
- package/dist/components/Radio/Radio.module.scss +20 -0
- package/dist/components/Radio/index.js +27 -0
- package/dist/components/Radio/variants/Checkmark/Checkmark.js +20 -0
- package/dist/components/Radio/variants/Checkmark/Checkmark.module.scss +24 -0
- package/dist/components/Radio/variants/Checkmark/index.js +27 -0
- package/dist/components/Radio/variants/Generic/Generic.js +22 -0
- package/dist/components/Radio/variants/Generic/Generic.module.scss +38 -0
- package/dist/components/Radio/variants/Generic/index.js +27 -0
- package/dist/components/SectionContainer/SectionContainer.js +49 -0
- package/dist/components/SectionContainer/SectionContainer.module.scss +30 -0
- package/dist/components/SectionContainer/index.js +27 -0
- package/dist/components/Select/Select.js +138 -0
- package/dist/components/Select/Select.module.scss +60 -0
- package/dist/components/Select/index.js +27 -0
- package/dist/components/Skeleton/Skeleton.js +30 -0
- package/dist/components/Skeleton/Skeleton.module.scss +21 -0
- package/dist/components/Skeleton/index.js +27 -0
- package/dist/components/Slider/Slider.js +70 -0
- package/dist/components/Slider/Slider.module.scss +7 -0
- package/dist/components/Slider/index.js +27 -0
- package/dist/components/Spacing/Spacing.js +34 -0
- package/dist/components/Spacing/Spacing.module.scss +13 -0
- package/dist/components/Spacing/index.js +27 -0
- package/dist/components/StaticScroller/StaticScroller.js +72 -0
- package/dist/components/StaticScroller/StaticScroller.module.scss +14 -0
- package/dist/components/StaticScroller/index.js +27 -0
- package/dist/components/Switch/Switch.js +47 -0
- package/dist/components/Switch/Switch.module.scss +46 -0
- package/dist/components/Switch/index.js +27 -0
- package/dist/components/Table/Table.js +115 -0
- package/dist/components/Table/Table.module.scss +74 -0
- package/dist/components/Table/index.js +27 -0
- package/dist/components/Tabs/Tabs.js +67 -0
- package/dist/components/Tabs/Tabs.module.scss +40 -0
- package/dist/components/Tabs/index.js +27 -0
- package/dist/components/Text/Text.js +44 -0
- package/dist/components/Text/Text.module.scss +13 -0
- package/dist/components/Text/index.js +27 -0
- package/dist/components/Transition/MasksFactory/DiagonalReveal.js +49 -0
- package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +78 -0
- package/dist/components/Transition/MasksFactory/PhysicsSquares.js +96 -0
- package/dist/components/Transition/MasksFactory/SquareToBalls.js +67 -0
- package/dist/components/Transition/MasksFactory/utils.js +30 -0
- package/dist/components/Transition/Transition.js +323 -0
- package/dist/components/Transition/Transition.module.scss +211 -0
- package/dist/components/Transition/index.js +27 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.ai.md +9 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.js +110 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +32 -0
- package/dist/components/UncontrolledTransition/index.js +27 -0
- package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +115 -0
- package/dist/components/WalletConnectionWrapper/index.js +27 -0
- package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +59 -0
- package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.module.scss +5 -0
- package/dist/components/utilitary/ScrollAndFocusLock/index.js +27 -0
- package/dist/context/AsyncProcess.js +74 -0
- package/dist/context/ContextAsyncControl.js +92 -0
- package/dist/context/CustomBrowserRouter.js +50 -0
- package/dist/context/OneUIProvider.js +129 -0
- package/dist/hooks/logs/useDependencyChangeDetection.js +20 -0
- package/dist/hooks/logs/useIsMounting.js +13 -0
- package/dist/hooks/persistence/useLocalStorage.js +48 -0
- package/dist/hooks/shims/ObjectWatchShim.js +54 -0
- package/dist/hooks/ui/useAdaptiveImage.js +36 -0
- package/dist/hooks/ui/useAlternating.js +24 -0
- package/dist/hooks/ui/useBreakpoint.js +26 -0
- package/dist/hooks/ui/useCustomScrollbar.js +28 -0
- package/dist/hooks/ui/useCustomScrollbar.module.scss +20 -0
- package/dist/hooks/ui/useEffectIf.js +14 -0
- package/dist/hooks/ui/useMouseHover.js +32 -0
- package/dist/hooks/ui/usePaginationControls.js +136 -0
- package/dist/hooks/ui/usePaginationControls.module.scss +16 -0
- package/dist/hooks/ui/useSnapToViewport.js +26 -0
- package/dist/hooks/ui/useSnapToViewport.module.scss +6 -0
- package/dist/hooks/ui/useTilt.js +161 -0
- package/dist/hooks/ui/useZoomable.js +135 -0
- package/dist/hooks/ui/useZoomable.module.scss +34 -0
- package/dist/hooks/useAsyncControl.ai.md +25 -0
- package/dist/hooks/useAsyncControl.js +79 -0
- package/dist/hooks/useContainedRepositioning.js +83 -0
- package/dist/hooks/useCustomHistory.js +24 -0
- package/dist/hooks/useElementFit.js +54 -0
- package/dist/hooks/useFirestoreWatch.js +45 -0
- package/dist/hooks/useFreeze.js +17 -0
- package/dist/hooks/useHero.js +273 -0
- package/dist/hooks/useHero.module.scss +41 -0
- package/dist/hooks/useIntersection.js +39 -0
- package/dist/hooks/useMergeRefs.js +36 -0
- package/dist/hooks/useObserve.js +25 -0
- package/dist/hooks/usePagination.js +163 -0
- package/dist/hooks/usePooledOperation.js +52 -0
- package/dist/hooks/usePooling.js +52 -0
- package/dist/hooks/useRebound.js +32 -0
- package/dist/hooks/useShortIntl.ai.md +5 -0
- package/dist/hooks/useShortIntl.js +82 -0
- package/dist/hooks/utility/useAsyncMemo.js +45 -0
- package/dist/hooks/utility/useDepChange.js +17 -0
- package/dist/hooks/utility/useEvents.js +33 -0
- package/dist/hooks/utility/useImmediate.js +14 -0
- package/dist/hooks/utility/useManualInit.js +25 -0
- package/dist/hooks/utility/useModule.js +18 -0
- package/dist/hooks/utility/useQuery.js +20 -0
- package/dist/hooks/utility/useUniqueEffect.js +20 -0
- package/dist/index.js +2149 -0
- package/dist/index.preprocess.js +42 -0
- package/dist/models/DebugLogger.js +16 -0
- package/dist/models/GenericContract.js +51 -0
- package/dist/models/Orbs.js +67 -0
- package/dist/reac-app-env.d.js +2 -0
- package/dist/storybook/assets/video/txt-reversed.mp4 +0 -0
- package/dist/storybookUtils/index.js +44 -0
- package/dist/type-utils.js +6 -0
- package/dist/types.js +6 -0
- package/dist/utility.d.js +2 -0
- package/dist/utils/blockchain.js +46 -0
- package/dist/utils/e2e.js +33 -0
- package/dist/utils/flatten.js +19 -0
- package/dist/utils/formatters.js +63 -0
- package/dist/utils/html.utils.js +15 -0
- package/dist/utils/ownEvent.js +16 -0
- package/dist/utils/test.js +19 -0
- package/dist-browser/bundle.js +83650 -0
- package/dist-browser/bundle.js.LICENSE.txt +94 -0
- package/dist-browser/bundle.js.map +1 -0
- package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js +2 -1
- package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js.map +1 -1
- package/dist-ts/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
- package/dist-ts/components/CheckBox/CheckBox.d.ts +3 -1
- package/dist-ts/components/CheckBox/CheckBox.js +7 -4
- package/dist-ts/components/CheckBox/CheckBox.js.map +1 -1
- package/dist-ts/components/CheckBox/CheckBox.module.scss +5 -0
- package/dist-ts/components/Input/Input.js +1 -1
- package/dist-ts/components/Input/Input.js.map +1 -1
- package/dist-ts/context/OneUIProvider.d.ts +3 -1
- package/dist-ts/context/OneUIProvider.js.map +1 -1
- package/dist-ts/hooks/ui/useAdaptiveImage.d.ts +1 -1
- package/dist-ts/hooks/ui/useAdaptiveImage.js +1 -1
- package/dist-ts/hooks/ui/useAdaptiveImage.js.map +1 -1
- package/dist-ts/hooks/ui/useMouseHover.d.ts +2 -2
- package/dist-ts/hooks/ui/useMouseHover.js +6 -5
- package/dist-ts/hooks/ui/useMouseHover.js.map +1 -1
- package/dist-ts/hooks/useObserve.d.ts +1 -1
- package/dist-ts/hooks/useObserve.js +1 -1
- package/dist-ts/hooks/useObserve.js.map +1 -1
- package/dist-ts/index.d.ts +1 -0
- package/dist-ts/index.js +1 -0
- package/dist-ts/index.js.map +1 -1
- package/dist-ts/models/ImageScales.d.ts +7 -0
- package/dist-ts/models/ImageScales.js +9 -0
- package/dist-ts/models/ImageScales.js.map +1 -0
- package/example.html +76 -0
- package/package.json +11 -4
- package/webpack.bundle.config.js +87 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = _default;
|
|
7
|
+
var _server = require("react-dom/server");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _utils = _interopRequireWildcard(require("./utils"));
|
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
/**
|
|
14
|
+
* Creates an svg that transitions from a square grid to rounded corners and them shrinks the balls to reveal the content
|
|
15
|
+
* @param amountOfVerticalSquares The amount of squares vertically to be shown
|
|
16
|
+
*/
|
|
17
|
+
function _default() {
|
|
18
|
+
let amountOfVerticalSquares = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
|
|
19
|
+
return function (el) {
|
|
20
|
+
const height = el.clientHeight;
|
|
21
|
+
const width = el.clientWidth;
|
|
22
|
+
const _ballsize = height / amountOfVerticalSquares;
|
|
23
|
+
const maximumBalls = width / _ballsize;
|
|
24
|
+
const amountOfBalls = Math.floor(maximumBalls);
|
|
25
|
+
const time = (0, _utils.getTime)(el);
|
|
26
|
+
const resultSvg = (0, _server.renderToString)( /*#__PURE__*/_react.default.createElement("svg", {
|
|
27
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
28
|
+
id: Date.now().toString()
|
|
29
|
+
}, (0, _utils.default)(amountOfVerticalSquares, amountOfBalls, _ballsize).map(_ref => {
|
|
30
|
+
let {
|
|
31
|
+
ballSize,
|
|
32
|
+
x,
|
|
33
|
+
y
|
|
34
|
+
} = _ref;
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement("rect", {
|
|
36
|
+
fill: "white"
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement("animate", {
|
|
38
|
+
attributeName: "rx",
|
|
39
|
+
attributeType: "XML",
|
|
40
|
+
values: "".concat(0, "px;", ballSize / 2, "px;").concat(ballSize / 2, "px"),
|
|
41
|
+
dur: "".concat(time, "ms")
|
|
42
|
+
}), /*#__PURE__*/_react.default.createElement("animate", {
|
|
43
|
+
attributeName: "x",
|
|
44
|
+
attributeType: "XML",
|
|
45
|
+
values: "".concat(x, "px;").concat(x, "px;").concat(x + ballSize / 2, "px"),
|
|
46
|
+
dur: "".concat(time, "ms")
|
|
47
|
+
}), /*#__PURE__*/_react.default.createElement("animate", {
|
|
48
|
+
attributeName: "y",
|
|
49
|
+
attributeType: "XML",
|
|
50
|
+
values: "".concat(y, "px;").concat(y, "px;").concat(y + ballSize / 2, "px"),
|
|
51
|
+
dur: "".concat(time, "ms")
|
|
52
|
+
}), /*#__PURE__*/_react.default.createElement("animate", {
|
|
53
|
+
attributeName: "width",
|
|
54
|
+
attributeType: "XML",
|
|
55
|
+
values: "".concat(ballSize, "px;").concat(ballSize, "px;", 0, "px"),
|
|
56
|
+
dur: "".concat(time, "ms")
|
|
57
|
+
}), /*#__PURE__*/_react.default.createElement("animate", {
|
|
58
|
+
attributeName: "height",
|
|
59
|
+
attributeType: "XML",
|
|
60
|
+
values: "".concat(ballSize, "px;").concat(ballSize, "px;", 0, "px"),
|
|
61
|
+
dur: "".concat(time, "ms")
|
|
62
|
+
}));
|
|
63
|
+
})));
|
|
64
|
+
return "url('data:image/svg+xml;charset=utf8,".concat(encodeURIComponent(resultSvg), "')");
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2VydmVyIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfZGVmYXVsdCIsImFtb3VudE9mVmVydGljYWxTcXVhcmVzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZWwiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ3aWR0aCIsImNsaWVudFdpZHRoIiwiX2JhbGxzaXplIiwibWF4aW11bUJhbGxzIiwiYW1vdW50T2ZCYWxscyIsIk1hdGgiLCJmbG9vciIsInRpbWUiLCJnZXRUaW1lIiwicmVzdWx0U3ZnIiwicmVuZGVyVG9TdHJpbmciLCJjcmVhdGVFbGVtZW50IiwieG1sbnMiLCJpZCIsIkRhdGUiLCJub3ciLCJ0b1N0cmluZyIsImJ1aWxkR3JpZCIsIm1hcCIsIl9yZWYiLCJiYWxsU2l6ZSIsIngiLCJ5IiwiZmlsbCIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVUeXBlIiwidmFsdWVzIiwiY29uY2F0IiwiZHVyIiwiZW5jb2RlVVJJQ29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVHJhbnNpdGlvbi9NYXNrc0ZhY3RvcnkvU3F1YXJlVG9CYWxscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyVG9TdHJpbmcgfSBmcm9tIFwicmVhY3QtZG9tL3NlcnZlclwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGJ1aWxkR3JpZCwgeyBnZXRUaW1lIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIHN2ZyB0aGF0IHRyYW5zaXRpb25zIGZyb20gYSBzcXVhcmUgZ3JpZCB0byByb3VuZGVkIGNvcm5lcnMgYW5kIHRoZW0gc2hyaW5rcyB0aGUgYmFsbHMgdG8gcmV2ZWFsIHRoZSBjb250ZW50XG4gKiBAcGFyYW0gYW1vdW50T2ZWZXJ0aWNhbFNxdWFyZXMgVGhlIGFtb3VudCBvZiBzcXVhcmVzIHZlcnRpY2FsbHkgdG8gYmUgc2hvd25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGFtb3VudE9mVmVydGljYWxTcXVhcmVzOiBudW1iZXIgPSAxMCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGNvbnN0IGhlaWdodCA9IGVsLmNsaWVudEhlaWdodDtcbiAgICBjb25zdCB3aWR0aCA9IGVsLmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IF9iYWxsc2l6ZSA9IGhlaWdodCAvIGFtb3VudE9mVmVydGljYWxTcXVhcmVzO1xuICAgIGNvbnN0IG1heGltdW1CYWxscyA9IHdpZHRoIC8gX2JhbGxzaXplO1xuICAgIGNvbnN0IGFtb3VudE9mQmFsbHMgPSBNYXRoLmZsb29yKG1heGltdW1CYWxscyk7XG5cbiAgICBjb25zdCB0aW1lID0gZ2V0VGltZShlbCk7XG5cbiAgICBjb25zdCByZXN1bHRTdmcgPSByZW5kZXJUb1N0cmluZyhcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGlkPXtEYXRlLm5vdygpLnRvU3RyaW5nKCl9PlxuICAgICAgICB7YnVpbGRHcmlkKGFtb3VudE9mVmVydGljYWxTcXVhcmVzLCBhbW91bnRPZkJhbGxzLCBfYmFsbHNpemUpLm1hcChcbiAgICAgICAgICAoeyBiYWxsU2l6ZSwgeCwgeSB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8cmVjdCBmaWxsPVwid2hpdGVcIj5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInJ4XCJcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGU9XCJYTUxcIlxuICAgICAgICAgICAgICAgICAgdmFsdWVzPXtgJHswfXB4OyR7YmFsbFNpemUgLyAyfXB4OyR7YmFsbFNpemUgLyAyfXB4YH1cbiAgICAgICAgICAgICAgICAgIGR1cj17YCR7dGltZX1tc2B9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInhcIlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVHlwZT1cIlhNTFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZXM9e2Ake3h9cHg7JHt4fXB4OyR7eCArIGJhbGxTaXplIC8gMn1weGB9XG4gICAgICAgICAgICAgICAgICBkdXI9e2Ake3RpbWV9bXNgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJ5XCJcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGU9XCJYTUxcIlxuICAgICAgICAgICAgICAgICAgdmFsdWVzPXtgJHt5fXB4OyR7eX1weDske3kgKyBiYWxsU2l6ZSAvIDJ9cHhgfVxuICAgICAgICAgICAgICAgICAgZHVyPXtgJHt0aW1lfW1zYH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxhbmltYXRlXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwid2lkdGhcIlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVHlwZT1cIlhNTFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZXM9e2Ake2JhbGxTaXplfXB4OyR7YmFsbFNpemV9cHg7JHswfXB4YH1cbiAgICAgICAgICAgICAgICAgIGR1cj17YCR7dGltZX1tc2B9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cImhlaWdodFwiXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVUeXBlPVwiWE1MXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlcz17YCR7YmFsbFNpemV9cHg7JHtiYWxsU2l6ZX1weDskezB9cHhgfVxuICAgICAgICAgICAgICAgICAgZHVyPXtgJHt0aW1lfW1zYH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3JlY3Q+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgKX1cbiAgICAgIDwvc3ZnPlxuICAgICk7XG5cbiAgICByZXR1cm4gYHVybCgnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgIHJlc3VsdFN2Z1xuICAgICl9JylgO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBNkMsU0FBQUsseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQUYsd0JBQUFNLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdB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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = buildGrid;
|
|
7
|
+
exports.getTime = getTime;
|
|
8
|
+
function buildGrid(amountOfVerticalSquares, howManyHorizontalSquare, ballSize) {
|
|
9
|
+
return new Array(howManyHorizontalSquare * amountOfVerticalSquares).fill(undefined).map((_, i) => {
|
|
10
|
+
const modX = Math.floor(i / howManyHorizontalSquare);
|
|
11
|
+
const modY = i - modX * howManyHorizontalSquare;
|
|
12
|
+
const ballsize = ballSize * 1.1;
|
|
13
|
+
const padding = (ballsize - ballSize) / 2;
|
|
14
|
+
const x = modY * ballSize - padding;
|
|
15
|
+
const y = modX * ballSize - padding;
|
|
16
|
+
return {
|
|
17
|
+
x,
|
|
18
|
+
y,
|
|
19
|
+
ballSize,
|
|
20
|
+
column: modY,
|
|
21
|
+
row: modX
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function getTime(el) {
|
|
26
|
+
const _time = getComputedStyle(el.firstElementChild).getPropertyValue("--animation-speed-transition") || "250ms";
|
|
27
|
+
const __time = _time.endsWith("ms") ? Number(_time.replace("ms", "")) : Number(_time.replace("s", "")) * 1000;
|
|
28
|
+
return __time + 50;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJidWlsZEdyaWQiLCJhbW91bnRPZlZlcnRpY2FsU3F1YXJlcyIsImhvd01hbnlIb3Jpem9udGFsU3F1YXJlIiwiYmFsbFNpemUiLCJBcnJheSIsImZpbGwiLCJ1bmRlZmluZWQiLCJtYXAiLCJfIiwiaSIsIm1vZFgiLCJNYXRoIiwiZmxvb3IiLCJtb2RZIiwiYmFsbHNpemUiLCJwYWRkaW5nIiwieCIsInkiLCJjb2x1bW4iLCJyb3ciLCJnZXRUaW1lIiwiZWwiLCJfdGltZSIsImdldENvbXB1dGVkU3R5bGUiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImdldFByb3BlcnR5VmFsdWUiLCJfX3RpbWUiLCJlbmRzV2l0aCIsIk51bWJlciIsInJlcGxhY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL01hc2tzRmFjdG9yeS91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZEdyaWQoXG4gIGFtb3VudE9mVmVydGljYWxTcXVhcmVzOiBudW1iZXIsXG4gIGhvd01hbnlIb3Jpem9udGFsU3F1YXJlOiBudW1iZXIsXG4gIGJhbGxTaXplOiBudW1iZXJcbikge1xuICByZXR1cm4gbmV3IEFycmF5KGhvd01hbnlIb3Jpem9udGFsU3F1YXJlICogYW1vdW50T2ZWZXJ0aWNhbFNxdWFyZXMpXG4gICAgLmZpbGwodW5kZWZpbmVkKVxuICAgIC5tYXAoKF8sIGkpID0+IHtcbiAgICAgIGNvbnN0IG1vZFggPSBNYXRoLmZsb29yKGkgLyBob3dNYW55SG9yaXpvbnRhbFNxdWFyZSk7XG4gICAgICBjb25zdCBtb2RZID0gaSAtIG1vZFggKiBob3dNYW55SG9yaXpvbnRhbFNxdWFyZTtcbiAgICAgIGNvbnN0IGJhbGxzaXplID0gYmFsbFNpemUgKiAxLjE7XG4gICAgICBjb25zdCBwYWRkaW5nID0gKGJhbGxzaXplIC0gYmFsbFNpemUpIC8gMjtcbiAgICAgIGNvbnN0IHggPSBtb2RZICogYmFsbFNpemUgLSBwYWRkaW5nO1xuICAgICAgY29uc3QgeSA9IG1vZFggKiBiYWxsU2l6ZSAtIHBhZGRpbmc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIGJhbGxTaXplLFxuICAgICAgICBjb2x1bW46IG1vZFksXG4gICAgICAgIHJvdzogbW9kWCxcbiAgICAgIH07XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICBjb25zdCBfdGltZSA9XG4gICAgZ2V0Q29tcHV0ZWRTdHlsZShlbC5maXJzdEVsZW1lbnRDaGlsZCEpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICBcIi0tYW5pbWF0aW9uLXNwZWVkLXRyYW5zaXRpb25cIlxuICAgICkgfHwgXCIyNTBtc1wiO1xuICBjb25zdCBfX3RpbWUgPSBfdGltZS5lbmRzV2l0aChcIm1zXCIpXG4gICAgPyBOdW1iZXIoX3RpbWUucmVwbGFjZShcIm1zXCIsIFwiXCIpKVxuICAgIDogTnVtYmVyKF90aW1lLnJlcGxhY2UoXCJzXCIsIFwiXCIpKSAqIDEwMDA7XG4gIHJldHVybiBfX3RpbWUgKyA1MDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFlLFNBQVNBLFNBQVNBLENBQy9CQyx1QkFBK0IsRUFDL0JDLHVCQUErQixFQUMvQkMsUUFBZ0IsRUFDaEI7RUFDQSxPQUFPLElBQUlDLEtBQUssQ0FBQ0YsdUJBQXVCLEdBQUdELHVCQUF1QixDQUFDLENBQ2hFSSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUNmQyxHQUFHLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7SUFDYixNQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxDQUFDLEdBQUdQLHVCQUF1QixDQUFDO0lBQ3BELE1BQU1XLElBQUksR0FBR0osQ0FBQyxHQUFHQyxJQUFJLEdBQUdSLHVCQUF1QjtJQUMvQyxNQUFNWSxRQUFRLEdBQUdYLFFBQVEsR0FBRyxHQUFHO0lBQy9CLE1BQU1ZLE9BQU8sR0FBRyxDQUFDRCxRQUFRLEdBQUdYLFFBQVEsSUFBSSxDQUFDO0lBQ3pDLE1BQU1hLENBQUMsR0FBR0gsSUFBSSxHQUFHVixRQUFRLEdBQUdZLE9BQU87SUFDbkMsTUFBTUUsQ0FBQyxHQUFHUCxJQUFJLEdBQUdQLFFBQVEsR0FBR1ksT0FBTztJQUVuQyxPQUFPO01BQ0xDLENBQUM7TUFDREMsQ0FBQztNQUNEZCxRQUFRO01BQ1JlLE1BQU0sRUFBRUwsSUFBSTtNQUNaTSxHQUFHLEVBQUVUO0lBQ1AsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNOO0FBRU8sU0FBU1UsT0FBT0EsQ0FBQ0MsRUFBa0IsRUFBRTtFQUMxQyxNQUFNQyxLQUFLLEdBQ1RDLGdCQUFnQixDQUFDRixFQUFFLENBQUNHLGlCQUFrQixDQUFDLENBQUNDLGdCQUFnQixDQUN0RCw4QkFDRixDQUFDLElBQUksT0FBTztFQUNkLE1BQU1DLE1BQU0sR0FBR0osS0FBSyxDQUFDSyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQy9CQyxNQUFNLENBQUNOLEtBQUssQ0FBQ08sT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUMvQkQsTUFBTSxDQUFDTixLQUFLLENBQUNPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJO0VBQ3pDLE9BQU9ILE1BQU0sR0FBRyxFQUFFO0FBQ3BCIn0=
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.TransitionAnimationTypes = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _TransitionModule = _interopRequireDefault(require("./Transition.module.scss"));
|
|
9
|
+
const _excluded = ["step", "contentStyle", "contentClassName", "children", "className", "onDiscardStep", "lockTransitionWidth", "lockTransitionHeight"];
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
18
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
19
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
20
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
21
|
+
function TransitionClasses(type) {
|
|
22
|
+
switch (type) {
|
|
23
|
+
case TransitionAnimationTypes.COIN_FLIP:
|
|
24
|
+
return {
|
|
25
|
+
backward: {
|
|
26
|
+
elementExiting: _TransitionModule.default.flipBottomUpOut,
|
|
27
|
+
elementEntering: _TransitionModule.default.flipBottomUpIn
|
|
28
|
+
},
|
|
29
|
+
forward: {
|
|
30
|
+
elementExiting: _TransitionModule.default.flipBottomUpOut,
|
|
31
|
+
elementEntering: _TransitionModule.default.flipBottomUpIn
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
case TransitionAnimationTypes.FADE:
|
|
35
|
+
return {
|
|
36
|
+
backward: {
|
|
37
|
+
elementExiting: _TransitionModule.default.fadeOutAbsolute,
|
|
38
|
+
elementEntering: _TransitionModule.default.fadeInDelayed
|
|
39
|
+
},
|
|
40
|
+
forward: {
|
|
41
|
+
elementExiting: _TransitionModule.default.fadeOutAbsolute,
|
|
42
|
+
elementEntering: _TransitionModule.default.fadeInDelayed
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
case TransitionAnimationTypes.SLIDE:
|
|
46
|
+
return {
|
|
47
|
+
backward: {
|
|
48
|
+
elementEntering: _TransitionModule.default.entranceLeft,
|
|
49
|
+
elementExiting: ""
|
|
50
|
+
},
|
|
51
|
+
forward: {
|
|
52
|
+
elementEntering: "",
|
|
53
|
+
elementExiting: _TransitionModule.default.exitLeft
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
case TransitionAnimationTypes.POP_FROM_CLICK_ORIGIN:
|
|
57
|
+
case TransitionAnimationTypes.POP_FROM_ELEMENT_ID:
|
|
58
|
+
return {
|
|
59
|
+
backward: {
|
|
60
|
+
elementEntering: _TransitionModule.default.fadeIn,
|
|
61
|
+
elementExiting: _TransitionModule.default.scaleOut
|
|
62
|
+
},
|
|
63
|
+
forward: {
|
|
64
|
+
elementEntering: _TransitionModule.default.scaleIn,
|
|
65
|
+
elementExiting: _TransitionModule.default.fadeOut
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
case TransitionAnimationTypes.MASK:
|
|
69
|
+
return {
|
|
70
|
+
backward: {
|
|
71
|
+
elementEntering: _TransitionModule.default.stubEntering,
|
|
72
|
+
elementExiting: _TransitionModule.default.stub
|
|
73
|
+
},
|
|
74
|
+
forward: {
|
|
75
|
+
elementEntering: _TransitionModule.default.stubEntering,
|
|
76
|
+
elementExiting: _TransitionModule.default.stub
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function ChildrenWrapperFactory(func, key, externalPropsContainer, /** This is used to prevent newer "duplicated" keys from being removed after the new element finished animation */
|
|
82
|
+
timestamp, toRemoveKeys) {
|
|
83
|
+
func.createdAt = timestamp;
|
|
84
|
+
func.associatedKey = key;
|
|
85
|
+
func.toRemoveKeys = toRemoveKeys;
|
|
86
|
+
func.externalProps = externalPropsContainer;
|
|
87
|
+
return func;
|
|
88
|
+
}
|
|
89
|
+
function _Transition(_ref, _containerRef) {
|
|
90
|
+
var _dataTestid;
|
|
91
|
+
let {
|
|
92
|
+
step,
|
|
93
|
+
contentStyle,
|
|
94
|
+
contentClassName = "",
|
|
95
|
+
children,
|
|
96
|
+
className,
|
|
97
|
+
onDiscardStep,
|
|
98
|
+
lockTransitionWidth = false,
|
|
99
|
+
lockTransitionHeight = false
|
|
100
|
+
} = _ref,
|
|
101
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
102
|
+
const containerRef = (0, _react.useMemo)(() => _containerRef || /*#__PURE__*/(0, _react.createRef)(), [_containerRef]);
|
|
103
|
+
const preTransitionDetails = (0, _react.useRef)({
|
|
104
|
+
transformOrigin: "initial"
|
|
105
|
+
});
|
|
106
|
+
const testId = (_dataTestid = props["data-testid"]) !== null && _dataTestid !== void 0 ? _dataTestid : "transition-container";
|
|
107
|
+
const [childrenWrappers, setChildrenWrappers] = (0, _react.useState)(() => {
|
|
108
|
+
var _children$step;
|
|
109
|
+
const externalProps = {
|
|
110
|
+
key: String(((_children$step = children[step]) === null || _children$step === void 0 ? void 0 : _children$step.key) || step),
|
|
111
|
+
style: contentStyle,
|
|
112
|
+
className: contentClassName
|
|
113
|
+
};
|
|
114
|
+
const func = ChildrenWrapperFactory(_ref2 => {
|
|
115
|
+
let {
|
|
116
|
+
children
|
|
117
|
+
} = _ref2;
|
|
118
|
+
return /*#__PURE__*/_react.default.createElement("div", externalProps, children);
|
|
119
|
+
}, children[step].key || step, externalProps, Date.now(), []);
|
|
120
|
+
return [func];
|
|
121
|
+
});
|
|
122
|
+
const prevStep = (0, _react.useRef)(step);
|
|
123
|
+
const prevChild = (0, _react.useRef)(children[step]);
|
|
124
|
+
(0, _react.useEffect)(() => () => {
|
|
125
|
+
prevChild.current = children[step];
|
|
126
|
+
});
|
|
127
|
+
(0, _react.useEffect)(() => {
|
|
128
|
+
var _children$step2, _prevChild$current, _children$step3;
|
|
129
|
+
containerRef.current.style.overflow = "hidden";
|
|
130
|
+
const transitionClasses = props.transitionType === TransitionAnimationTypes.CUSTOM ? props.config : TransitionClasses(props.transitionType || TransitionAnimationTypes.SLIDE);
|
|
131
|
+
if (prevChild.current !== null && ((_children$step2 = children[step]) === null || _children$step2 === void 0 ? void 0 : _children$step2.key) === ((_prevChild$current = prevChild.current) === null || _prevChild$current === void 0 ? void 0 : _prevChild$current.key) // I'm rendering the same screen
|
|
132
|
+
) {
|
|
133
|
+
return () => {
|
|
134
|
+
prevStep.current = step;
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const key = ((_children$step3 = children[step]) === null || _children$step3 === void 0 ? void 0 : _children$step3.key) || step;
|
|
138
|
+
if (prevStep.current !== step && lockTransitionWidth) containerRef.current.style.width = "".concat(containerRef.current.clientWidth, "px");
|
|
139
|
+
if (prevStep.current !== step && lockTransitionHeight) containerRef.current.style.height = "".concat(containerRef.current.clientHeight, "px");
|
|
140
|
+
const transitionMask = props.transitionType === TransitionAnimationTypes.MASK ? props.maskFactory(containerRef.current) : "";
|
|
141
|
+
const insertedAt = Date.now();
|
|
142
|
+
|
|
143
|
+
/** This runs on backwards */
|
|
144
|
+
if (prevStep.current > step) {
|
|
145
|
+
var _prevChild$current2;
|
|
146
|
+
const stepToRemove = prevStep.current;
|
|
147
|
+
const prevKeyToRemove = ((_prevChild$current2 = prevChild.current) === null || _prevChild$current2 === void 0 ? void 0 : _prevChild$current2.key) || stepToRemove;
|
|
148
|
+
setChildrenWrappers(screensBeforeChangingStep => {
|
|
149
|
+
const enteringScreenRef = /*#__PURE__*/(0, _react.createRef)();
|
|
150
|
+
const [FirstNextScreen, ...restOfScreens] = screensBeforeChangingStep.filter(a => (a === null || a === void 0 ? void 0 : a.associatedKey) !== String(key));
|
|
151
|
+
if (FirstNextScreen) {
|
|
152
|
+
Object.assign(FirstNextScreen.externalProps, {
|
|
153
|
+
style: _objectSpread(_objectSpread({}, contentStyle), {}, {
|
|
154
|
+
WebkitMaskImage: transitionMask
|
|
155
|
+
}),
|
|
156
|
+
className: "".concat(transitionClasses.backward.elementExiting)
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function animationEndListener(event) {
|
|
160
|
+
var _enteringScreenRef$cu, _enteringScreenRef$cu2;
|
|
161
|
+
if (event.target !== event.currentTarget) return;
|
|
162
|
+
const isAnimationFromExpectedState = (_enteringScreenRef$cu = enteringScreenRef.current) === null || _enteringScreenRef$cu === void 0 ? void 0 : _enteringScreenRef$cu.classList.contains(transitionClasses.backward.elementEntering);
|
|
163
|
+
(_enteringScreenRef$cu2 = enteringScreenRef.current) === null || _enteringScreenRef$cu2 === void 0 || _enteringScreenRef$cu2.classList.remove(transitionClasses.backward.elementEntering);
|
|
164
|
+
setChildrenWrappers(screensAfterTheCurrentStepEntered => {
|
|
165
|
+
if (onDiscardStep) {
|
|
166
|
+
if (isAnimationFromExpectedState) onDiscardStep(prevKeyToRemove, insertedAt);
|
|
167
|
+
if (FirstNextScreen && FirstNextScreen.toRemoveKeys) FirstNextScreen.toRemoveKeys.forEach(onDiscardStep);
|
|
168
|
+
}
|
|
169
|
+
return screensAfterTheCurrentStepEntered.filter(s => {
|
|
170
|
+
var _FirstNextScreen$toRe;
|
|
171
|
+
const shouldKeep = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) && !(FirstNextScreen !== null && FirstNextScreen !== void 0 && (_FirstNextScreen$toRe = FirstNextScreen.toRemoveKeys) !== null && _FirstNextScreen$toRe !== void 0 && _FirstNextScreen$toRe.some(k => String(k) === String(s === null || s === void 0 ? void 0 : s.associatedKey))) || s.createdAt > insertedAt;
|
|
172
|
+
return shouldKeep;
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
event.currentTarget.removeEventListener("animationend", animationEndListener);
|
|
176
|
+
}
|
|
177
|
+
const propsContainer = {
|
|
178
|
+
ref: enteringScreenRef,
|
|
179
|
+
key,
|
|
180
|
+
className: "".concat(transitionClasses.backward.elementEntering, " ").concat(contentClassName),
|
|
181
|
+
style: _objectSpread({}, contentStyle),
|
|
182
|
+
onAnimationEnd: animationEndListener
|
|
183
|
+
};
|
|
184
|
+
const newWrapper = ChildrenWrapperFactory(_ref3 => {
|
|
185
|
+
let {
|
|
186
|
+
children
|
|
187
|
+
} = _ref3;
|
|
188
|
+
return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
|
|
189
|
+
}, key, propsContainer, insertedAt, [prevKeyToRemove, ...((FirstNextScreen === null || FirstNextScreen === void 0 ? void 0 : FirstNextScreen.toRemoveKeys) || [])]);
|
|
190
|
+
if (FirstNextScreen) return [newWrapper, FirstNextScreen || ChildrenWrapperFactory(() => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), "", {}, insertedAt), ...restOfScreens];else return [newWrapper];
|
|
191
|
+
});
|
|
192
|
+
} else if (prevStep.current < step) {
|
|
193
|
+
var _prevChild$current3;
|
|
194
|
+
const stepToDelete = prevStep.current;
|
|
195
|
+
const prevKeyToRemove = String(((_prevChild$current3 = prevChild.current) === null || _prevChild$current3 === void 0 ? void 0 : _prevChild$current3.key) || stepToDelete);
|
|
196
|
+
setChildrenWrappers(screensBeforeChangingStep => {
|
|
197
|
+
const lastIndex = screensBeforeChangingStep.length - 1;
|
|
198
|
+
const lastWrapper = screensBeforeChangingStep[lastIndex];
|
|
199
|
+
const nextScreenRef = /*#__PURE__*/(0, _react.createRef)();
|
|
200
|
+
if (lastWrapper) {
|
|
201
|
+
Object.assign(lastWrapper.externalProps, {
|
|
202
|
+
style: _objectSpread(_objectSpread({}, contentStyle), {}, {
|
|
203
|
+
WebkitMaskImage: transitionMask
|
|
204
|
+
}),
|
|
205
|
+
className: "".concat(contentClassName, " ").concat(transitionClasses.forward.elementExiting),
|
|
206
|
+
onAnimationEnd: e => {
|
|
207
|
+
var _nextScreenRef$curren;
|
|
208
|
+
if (e.target !== e.currentTarget) return;
|
|
209
|
+
if (transitionClasses.forward.elementEntering) (_nextScreenRef$curren = nextScreenRef.current) === null || _nextScreenRef$curren === void 0 || _nextScreenRef$curren.classList.remove(transitionClasses.forward.elementEntering);
|
|
210
|
+
if (onDiscardStep) onDiscardStep(prevKeyToRemove, insertedAt);
|
|
211
|
+
setChildrenWrappers(screensAfterTheCurrentStepEntered => {
|
|
212
|
+
const nextState = screensAfterTheCurrentStepEntered.filter(s => {
|
|
213
|
+
const shouldMantain = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) || s.createdAt > insertedAt;
|
|
214
|
+
return shouldMantain;
|
|
215
|
+
});
|
|
216
|
+
return nextState;
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
const propsContainer = {
|
|
222
|
+
ref: nextScreenRef,
|
|
223
|
+
key,
|
|
224
|
+
style: _objectSpread({}, contentStyle),
|
|
225
|
+
className: "".concat(contentClassName, " ").concat(transitionClasses.forward.elementEntering)
|
|
226
|
+
};
|
|
227
|
+
const newWrapper = ChildrenWrapperFactory(_ref4 => {
|
|
228
|
+
let {
|
|
229
|
+
children
|
|
230
|
+
} = _ref4;
|
|
231
|
+
return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
|
|
232
|
+
}, key, propsContainer, insertedAt);
|
|
233
|
+
return [...screensBeforeChangingStep.slice(0, lastIndex), lastWrapper || ChildrenWrapperFactory(() => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), "fallback", {}, insertedAt), newWrapper];
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
return () => {
|
|
237
|
+
prevStep.current = step;
|
|
238
|
+
};
|
|
239
|
+
}, [step]);
|
|
240
|
+
(0, _react.useEffect)(() => {
|
|
241
|
+
if (childrenWrappers.length === 1 && lockTransitionWidth) containerRef.current.style.width = "";
|
|
242
|
+
if (childrenWrappers.length === 1 && lockTransitionHeight) containerRef.current.style.height = "";
|
|
243
|
+
}, [childrenWrappers.length !== 1]);
|
|
244
|
+
(0, _react.useEffect)(() => {
|
|
245
|
+
if (props.transitionType === TransitionAnimationTypes.POP_FROM_ELEMENT_ID && "elementId" in props) {
|
|
246
|
+
const element = document.querySelector("#".concat(props.elementId));
|
|
247
|
+
if (element) {
|
|
248
|
+
const {
|
|
249
|
+
clientWidth,
|
|
250
|
+
clientHeight
|
|
251
|
+
} = containerRef.current;
|
|
252
|
+
const offsetX = element.clientLeft + element.offsetLeft + element.clientWidth / 2;
|
|
253
|
+
const offsetY = element.clientTop + element.offsetTop + element.clientHeight / 2;
|
|
254
|
+
const percentX = offsetX * 100 / clientWidth;
|
|
255
|
+
const percentY = offsetY * 100 / clientHeight;
|
|
256
|
+
preTransitionDetails.current.transformOrigin = "".concat(percentX, "% ").concat(percentY, "%");
|
|
257
|
+
Object.assign(containerRef.current.style, {
|
|
258
|
+
transformOrigin: "".concat(percentX, "% ").concat(percentY, "%")
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
} else {
|
|
262
|
+
Object.assign(containerRef.current.style, preTransitionDetails.current);
|
|
263
|
+
}
|
|
264
|
+
if (childrenWrappers.length === 1) {
|
|
265
|
+
containerRef.current.style.overflow = "";
|
|
266
|
+
}
|
|
267
|
+
}, [childrenWrappers.length]);
|
|
268
|
+
const propsToSpread = _objectSpread({}, props);
|
|
269
|
+
delete propsToSpread.transitionType;
|
|
270
|
+
delete propsToSpread.config;
|
|
271
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("section", _extends({}, propsToSpread, {
|
|
272
|
+
onClick: e => {
|
|
273
|
+
const {
|
|
274
|
+
currentTarget: {
|
|
275
|
+
offsetTop,
|
|
276
|
+
offsetLeft,
|
|
277
|
+
clientWidth,
|
|
278
|
+
clientHeight
|
|
279
|
+
},
|
|
280
|
+
clientX,
|
|
281
|
+
clientY
|
|
282
|
+
} = e;
|
|
283
|
+
const offsetX = clientX - offsetLeft;
|
|
284
|
+
const offsetY = clientY - offsetTop;
|
|
285
|
+
const percentX = offsetX * 100 / clientWidth;
|
|
286
|
+
const percentY = offsetY * 100 / clientHeight;
|
|
287
|
+
if (props.transitionType === TransitionAnimationTypes.POP_FROM_ELEMENT_ID || props.transitionType === TransitionAnimationTypes.POP_FROM_CLICK_ORIGIN) preTransitionDetails.current.transformOrigin = "".concat(percentX, "% ").concat(percentY, "%");
|
|
288
|
+
if (props.onClick) props.onClick(e);
|
|
289
|
+
},
|
|
290
|
+
ref: containerRef,
|
|
291
|
+
className: "".concat(_TransitionModule.default.section, " ").concat(className)
|
|
292
|
+
}), childrenWrappers.map(Wrapper => {
|
|
293
|
+
const childToRender = children.find((a, i) => ((a === null || a === void 0 ? void 0 : a.key) || i) === (Wrapper === null || Wrapper === void 0 ? void 0 : Wrapper.associatedKey));
|
|
294
|
+
return /*#__PURE__*/_react.default.createElement(Wrapper, {
|
|
295
|
+
key: "".concat(Wrapper.associatedKey, " ").concat(Wrapper.createdAt)
|
|
296
|
+
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childToRender));
|
|
297
|
+
})));
|
|
298
|
+
}
|
|
299
|
+
let TransitionAnimationTypes = exports.TransitionAnimationTypes = /*#__PURE__*/function (TransitionAnimationTypes) {
|
|
300
|
+
TransitionAnimationTypes[TransitionAnimationTypes["SLIDE"] = 0] = "SLIDE";
|
|
301
|
+
TransitionAnimationTypes[TransitionAnimationTypes["POP_FROM_CLICK_ORIGIN"] = 1] = "POP_FROM_CLICK_ORIGIN";
|
|
302
|
+
TransitionAnimationTypes[TransitionAnimationTypes["POP_FROM_ELEMENT_ID"] = 2] = "POP_FROM_ELEMENT_ID";
|
|
303
|
+
TransitionAnimationTypes[TransitionAnimationTypes["FADE"] = 3] = "FADE";
|
|
304
|
+
TransitionAnimationTypes[TransitionAnimationTypes["COIN_FLIP"] = 4] = "COIN_FLIP";
|
|
305
|
+
TransitionAnimationTypes[TransitionAnimationTypes["MASK"] = 5] = "MASK";
|
|
306
|
+
TransitionAnimationTypes[TransitionAnimationTypes["CUSTOM"] = 6] = "CUSTOM";
|
|
307
|
+
return TransitionAnimationTypes;
|
|
308
|
+
}({});
|
|
309
|
+
/**
|
|
310
|
+
* A component that manages smooth transitions between different views or screens.
|
|
311
|
+
* It handles animations and switching between multiple children elements.
|
|
312
|
+
*
|
|
313
|
+
* Simple explanation: This component controls how content changes from one screen to another,
|
|
314
|
+
* making the transition look smooth and professional with various animation styles.
|
|
315
|
+
*/
|
|
316
|
+
const Transition = /*#__PURE__*/(0, _react.forwardRef)(_Transition);
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* A component that manages smooth transitions between different views or screens.
|
|
320
|
+
* It handles animations and switching between multiple children elements.
|
|
321
|
+
*/
|
|
322
|
+
var _default = exports.default = Transition;
|
|
323
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImFwcGx5Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJUcmFuc2l0aW9uQ2xhc3NlcyIsInR5cGUiLCJUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMiLCJDT0lOX0ZMSVAiLCJiYWNrd2FyZCIsImVsZW1lbnRFeGl0aW5nIiwiU3R5bGVzIiwiZmxpcEJvdHRvbVVwT3V0IiwiZWxlbWVudEVudGVyaW5nIiwiZmxpcEJvdHRvbVVwSW4iLCJmb3J3YXJkIiwiRkFERSIsImZhZGVPdXRBYnNvbHV0ZSIsImZhZGVJbkRlbGF5ZWQiLCJTTElERSIsImVudHJhbmNlTGVmdCIsImV4aXRMZWZ0IiwiUE9QX0ZST01fQ0xJQ0tfT1JJR0lOIiwiUE9QX0ZST01fRUxFTUVOVF9JRCIsImZhZGVJbiIsInNjYWxlT3V0Iiwic2NhbGVJbiIsImZhZGVPdXQiLCJNQVNLIiwic3R1YkVudGVyaW5nIiwic3R1YiIsIkNoaWxkcmVuV3JhcHBlckZhY3RvcnkiLCJmdW5jIiwiZXh0ZXJuYWxQcm9wc0NvbnRhaW5lciIsInRpbWVzdGFtcCIsInRvUmVtb3ZlS2V5cyIsImNyZWF0ZWRBdCIsImFzc29jaWF0ZWRLZXkiLCJleHRlcm5hbFByb3BzIiwiX1RyYW5zaXRpb24iLCJfcmVmIiwiX2NvbnRhaW5lclJlZiIsIl9kYXRhVGVzdGlkIiwic3RlcCIsImNvbnRlbnRTdHlsZSIsImNvbnRlbnRDbGFzc05hbWUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uRGlzY2FyZFN0ZXAiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZU1lbW8iLCJjcmVhdGVSZWYiLCJwcmVUcmFuc2l0aW9uRGV0YWlscyIsInVzZVJlZiIsInRyYW5zZm9ybU9yaWdpbiIsInRlc3RJZCIsImNoaWxkcmVuV3JhcHBlcnMiLCJzZXRDaGlsZHJlbldyYXBwZXJzIiwidXNlU3RhdGUiLCJfY2hpbGRyZW4kc3RlcCIsInN0eWxlIiwiX3JlZjIiLCJjcmVhdGVFbGVtZW50IiwiRGF0ZSIsIm5vdyIsInByZXZTdGVwIiwicHJldkNoaWxkIiwidXNlRWZmZWN0IiwiY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMiIsIl9wcmV2Q2hpbGQkY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMyIsIm92ZXJmbG93IiwidHJhbnNpdGlvbkNsYXNzZXMiLCJ0cmFuc2l0aW9uVHlwZSIsIkNVU1RPTSIsImNvbmZpZyIsIndpZHRoIiwiY29uY2F0IiwiY2xpZW50V2lkdGgiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ0cmFuc2l0aW9uTWFzayIsIm1hc2tGYWN0b3J5IiwiaW5zZXJ0ZWRBdCIsIl9wcmV2Q2hpbGQkY3VycmVudDIiLCJzdGVwVG9SZW1vdmUiLCJwcmV2S2V5VG9SZW1vdmUiLCJzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwIiwiZW50ZXJpbmdTY3JlZW5SZWYiLCJGaXJzdE5leHRTY3JlZW4iLCJyZXN0T2ZTY3JlZW5zIiwiYSIsIldlYmtpdE1hc2tJbWFnZSIsImFuaW1hdGlvbkVuZExpc3RlbmVyIiwiZXZlbnQiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UyIiwiY3VycmVudFRhcmdldCIsImlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInJlbW92ZSIsInNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCIsInMiLCJfRmlyc3ROZXh0U2NyZWVuJHRvUmUiLCJzaG91bGRLZWVwIiwic29tZSIsImsiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicHJvcHNDb250YWluZXIiLCJyZWYiLCJvbkFuaW1hdGlvbkVuZCIsIm5ld1dyYXBwZXIiLCJfcmVmMyIsIkZyYWdtZW50IiwiX3ByZXZDaGlsZCRjdXJyZW50MyIsInN0ZXBUb0RlbGV0ZSIsImxhc3RJbmRleCIsImxhc3RXcmFwcGVyIiwibmV4dFNjcmVlblJlZiIsImUiLCJfbmV4dFNjcmVlblJlZiRjdXJyZW4iLCJuZXh0U3RhdGUiLCJzaG91bGRNYW50YWluIiwiX3JlZjQiLCJzbGljZSIsImVsZW1lbnQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbGVtZW50SWQiLCJvZmZzZXRYIiwiY2xpZW50TGVmdCIsIm9mZnNldExlZnQiLCJvZmZzZXRZIiwiY2xpZW50VG9wIiwib2Zmc2V0VG9wIiwicGVyY2VudFgiLCJwZXJjZW50WSIsInByb3BzVG9TcHJlYWQiLCJvbkNsaWNrIiwiY2xpZW50WCIsImNsaWVudFkiLCJzZWN0aW9uIiwibWFwIiwiV3JhcHBlciIsImNoaWxkVG9SZW5kZXIiLCJmaW5kIiwiZXhwb3J0cyIsIlRyYW5zaXRpb24iLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL1RyYW5zaXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBBbmltYXRpb25FdmVudCxcbiAgY3JlYXRlUmVmLFxuICBDU1NQcm9wZXJ0aWVzLFxuICBEZXRhaWxlZEhUTUxQcm9wcyxcbiAgRm9yd2FyZGVkUmVmLFxuICBmb3J3YXJkUmVmLFxuICBLZXksXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIFJlYWN0RWxlbWVudCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zID1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86XG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNPSU5fRkxJUDtcbiAgICB9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OiBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDtcbiAgICAgIGVsZW1lbnRJZDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLO1xuICAgICAgLyoqXG4gICAgICAgKiBJdCBwcm92aWRlcyB0aGUgdHJhbnNpdGlvbiBjb250YWluZXIgc28geW91IGNhbiBjcmVhdGUgYSBkeW5hbWljIHN2ZyB0byBtYXNrIHdpdGhcbiAgICAgICAqL1xuICAgICAgbWFza0ZhY3Rvcnk6IChjb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSA9PiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHRyYW5zaXRpb25UeXBlPzogVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTTtcbiAgICAgIGNvbmZpZzogUmV0dXJuVHlwZTx0eXBlb2YgVHJhbnNpdGlvbkNsYXNzZXM+O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgc3RlcDogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNvbnRlbnRTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGNvbnRlbnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiAoUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkKVtdO1xuICBvbkRpc2NhcmRTdGVwPzogKGRpc2NhcmRlZEtleTogUmVhY3QuS2V5LCBzdGFydGVkQW5pbWF0aW9uQXQ6IG51bWJlcikgPT4gdm9pZDtcbiAgbG9ja1RyYW5zaXRpb25XaWR0aD86IGJvb2xlYW47XG4gIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PzogYm9vbGVhbjtcbn0gJiBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zICZcbiAgT21pdDxcbiAgICBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIGFueT4sXG4gICAgXCJjbGFzc05hbWVcIiB8IFwiY2hpbGRyZW5cIlxuICA+O1xuXG5mdW5jdGlvbiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgdHlwZTogTm9uTnVsbGFibGU8XG4gICAgRXhjbHVkZTxUcmFuc2l0aW9uUHJvcHNbXCJ0cmFuc2l0aW9uVHlwZVwiXSwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTT5cbiAgPixcbik6IHtcbiAgLyoqXG4gICAqIEFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgbm90IHZpc2libGUgYW5kIGlzIG5vdyBlbnRlcmluZyB0aGUgc2NyZWVuXG4gICAqL1xuICBiYWNrd2FyZDoge1xuICAgIGVsZW1lbnRFbnRlcmluZzogc3RyaW5nO1xuICAgIGVsZW1lbnRFeGl0aW5nOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBBcHBsaWVkIHRvIHRoZSBlbGVtZW50IHRoYXQgd2FzIHZpc2libGUgYW5kIG5vdyBpcyBleGl0aW5nIHRoZSBzY3JlZW5cbiAgICovXG4gIGZvcndhcmQ6IHtcbiAgICBlbGVtZW50RW50ZXJpbmc6IHN0cmluZztcbiAgICBlbGVtZW50RXhpdGluZzogc3RyaW5nO1xuICB9O1xufSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNPSU5fRkxJUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBPdXQsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmxpcEJvdHRvbVVwSW4sXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZsaXBCb3R0b21VcE91dCxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBJbixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuRkFERTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mYWRlT3V0QWJzb2x1dGUsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluRGVsYXllZCxcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmFkZU91dEFic29sdXRlLFxuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZhZGVJbkRlbGF5ZWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5lbnRyYW5jZUxlZnQsXG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFwiXCIsXG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5leGl0TGVmdCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fQ0xJQ0tfT1JJR0lOOlxuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZhZGVJbixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnNjYWxlT3V0LFxuICAgICAgICB9LFxuICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc2NhbGVJbixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZhZGVPdXQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLk1BU0s6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnN0dWIsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5zdHViRW50ZXJpbmcsXG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5zdHViLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgfVxufVxuXG50eXBlIENoaWxkcmVuV3JhcHBlciA9ICgocHJvcHM6IHtcbiAgY2hpbGRyZW46IFRyYW5zaXRpb25Qcm9wc1tcImNoaWxkcmVuXCJdW251bWJlcl07XG59KSA9PiBSZWFjdEVsZW1lbnQpICYge1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgYXNzb2NpYXRlZEtleTogS2V5O1xuICB0b1JlbW92ZUtleXM/OiBLZXlbXTtcbiAgZXh0ZXJuYWxQcm9wczogeyBbazogc3RyaW5nXTogYW55IH07XG59O1xuXG5mdW5jdGlvbiBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICBmdW5jOiAocDogeyBjaGlsZHJlbjogVHJhbnNpdGlvblByb3BzW1wiY2hpbGRyZW5cIl0gfSkgPT4gUmVhY3RFbGVtZW50LFxuICBrZXk6IEtleSxcbiAgZXh0ZXJuYWxQcm9wc0NvbnRhaW5lcjogeyBbazogc3RyaW5nXTogYW55IH0sXG4gIC8qKiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudCBuZXdlciBcImR1cGxpY2F0ZWRcIiBrZXlzIGZyb20gYmVpbmcgcmVtb3ZlZCBhZnRlciB0aGUgbmV3IGVsZW1lbnQgZmluaXNoZWQgYW5pbWF0aW9uICovXG4gIHRpbWVzdGFtcDogbnVtYmVyLFxuICB0b1JlbW92ZUtleXM/OiBLZXlbXSxcbik6IENoaWxkcmVuV3JhcHBlciB7XG4gIChmdW5jIGFzIGFueSkuY3JlYXRlZEF0ID0gdGltZXN0YW1wO1xuICAoZnVuYyBhcyBhbnkpLmFzc29jaWF0ZWRLZXkgPSBrZXk7XG4gIChmdW5jIGFzIGFueSkudG9SZW1vdmVLZXlzID0gdG9SZW1vdmVLZXlzO1xuICAoZnVuYyBhcyBhbnkpLmV4dGVybmFsUHJvcHMgPSBleHRlcm5hbFByb3BzQ29udGFpbmVyO1xuICByZXR1cm4gZnVuYyBhcyB1bmtub3duIGFzIENoaWxkcmVuV3JhcHBlcjtcbn1cbmZ1bmN0aW9uIF9UcmFuc2l0aW9uKFxuICB7XG4gICAgc3RlcCxcbiAgICBjb250ZW50U3R5bGUsXG4gICAgY29udGVudENsYXNzTmFtZSA9IFwiXCIsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uRGlzY2FyZFN0ZXAsXG4gICAgbG9ja1RyYW5zaXRpb25XaWR0aCA9IGZhbHNlLFxuICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0ID0gZmFsc2UsXG4gICAgLi4ucHJvcHNcbiAgfTogVHJhbnNpdGlvblByb3BzLFxuICBfY29udGFpbmVyUmVmOiBGb3J3YXJkZWRSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPixcbikge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICAoX2NvbnRhaW5lclJlZiBhcyBNdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4pIHx8IGNyZWF0ZVJlZigpLFxuICAgIFtfY29udGFpbmVyUmVmXSxcbiAgKTtcbiAgY29uc3QgcHJlVHJhbnNpdGlvbkRldGFpbHMgPSB1c2VSZWY8Q1NTUHJvcGVydGllcz4oe1xuICAgIHRyYW5zZm9ybU9yaWdpbjogXCJpbml0aWFsXCIsXG4gIH0pO1xuICBjb25zdCB0ZXN0SWQgPSAocHJvcHMgYXMgYW55KVtcImRhdGEtdGVzdGlkXCJdID8/IFwidHJhbnNpdGlvbi1jb250YWluZXJcIjtcbiAgY29uc3QgW2NoaWxkcmVuV3JhcHBlcnMsIHNldENoaWxkcmVuV3JhcHBlcnNdID0gdXNlU3RhdGU8XG4gICAgKENoaWxkcmVuV3JhcHBlciB8IHVuZGVmaW5lZClbXVxuICA+KCgpID0+IHtcbiAgICBjb25zdCBleHRlcm5hbFByb3BzID0ge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsXG4gICAgICBrZXk6IFN0cmluZyhjaGlsZHJlbltzdGVwXT8ua2V5IHx8IHN0ZXApLFxuICAgICAgc3R5bGU6IGNvbnRlbnRTdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogY29udGVudENsYXNzTmFtZSxcbiAgICB9O1xuICAgIGNvbnN0IGZ1bmMgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgKHsgY2hpbGRyZW4gfSkgPT4gPGRpdiB7Li4uZXh0ZXJuYWxQcm9wc30+e2NoaWxkcmVufTwvZGl2PixcbiAgICAgIGNoaWxkcmVuW3N0ZXBdIS5rZXkgfHwgc3RlcCxcbiAgICAgIGV4dGVybmFsUHJvcHMsXG4gICAgICBEYXRlLm5vdygpLFxuICAgICAgW10sXG4gICAgKTtcbiAgICByZXR1cm4gW2Z1bmNdO1xuICB9KTtcblxuICBjb25zdCBwcmV2U3RlcCA9IHVzZVJlZihzdGVwKTtcbiAgY29uc3QgcHJldkNoaWxkID0gdXNlUmVmKGNoaWxkcmVuW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgIHByZXZDaGlsZC5jdXJyZW50ID0gY2hpbGRyZW5bc3RlcF07XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICBjb25zdCB0cmFuc2l0aW9uQ2xhc3NlcyA9XG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTVxuICAgICAgICA/IHByb3BzLmNvbmZpZ1xuICAgICAgICA6IFRyYW5zaXRpb25DbGFzc2VzKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgfHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFLFxuICAgICAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBwcmV2Q2hpbGQuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgICAgY2hpbGRyZW5bc3RlcF0/LmtleSA9PT0gcHJldkNoaWxkLmN1cnJlbnQ/LmtleSAvLyBJJ20gcmVuZGVyaW5nIHRoZSBzYW1lIHNjcmVlblxuICAgICkge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGNoaWxkcmVuW3N0ZXBdPy5rZXkgfHwgc3RlcDtcblxuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ICE9PSBzdGVwICYmIGxvY2tUcmFuc2l0aW9uV2lkdGgpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUud2lkdGggPSBgJHtcbiAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLmNsaWVudFdpZHRoXG4gICAgICB9cHhgO1xuXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgIT09IHN0ZXAgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5jbGllbnRIZWlnaHRcbiAgICAgIH1weGA7XG4gICAgY29uc3QgdHJhbnNpdGlvbk1hc2sgPVxuICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLXG4gICAgICAgID8gcHJvcHMubWFza0ZhY3RvcnkoY29udGFpbmVyUmVmLmN1cnJlbnQhKVxuICAgICAgICA6IFwiXCI7XG4gICAgY29uc3QgaW5zZXJ0ZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAvKiogVGhpcyBydW5zIG9uIGJhY2t3YXJkcyAqL1xuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ID4gc3RlcCkge1xuICAgICAgY29uc3Qgc3RlcFRvUmVtb3ZlID0gcHJldlN0ZXAuY3VycmVudDtcbiAgICAgIGNvbnN0IHByZXZLZXlUb1JlbW92ZSA9IHByZXZDaGlsZC5jdXJyZW50Py5rZXkgfHwgc3RlcFRvUmVtb3ZlO1xuICAgICAgc2V0Q2hpbGRyZW5XcmFwcGVycygoc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBlbnRlcmluZ1NjcmVlblJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICAgICAgY29uc3QgW0ZpcnN0TmV4dFNjcmVlbiwgLi4ucmVzdE9mU2NyZWVuc10gPVxuICAgICAgICAgIHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+IGE/LmFzc29jaWF0ZWRLZXkgIT09IFN0cmluZyhrZXkpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKEZpcnN0TmV4dFNjcmVlbikge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oRmlyc3ROZXh0U2NyZWVuLmV4dGVybmFsUHJvcHMsIHtcbiAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLFxuICAgICAgICAgICAgc3R5bGU6IHsgLi4uY29udGVudFN0eWxlLCBXZWJraXRNYXNrSW1hZ2U6IHRyYW5zaXRpb25NYXNrIH0sXG4gICAgICAgICAgICBjbGFzc05hbWU6IGAke3RyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFeGl0aW5nfWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kTGlzdGVuZXIoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50PEhUTUxEaXZFbGVtZW50Pikge1xuICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IGlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUgPVxuICAgICAgICAgICAgZW50ZXJpbmdTY3JlZW5SZWYuY3VycmVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmcsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGVudGVyaW5nU2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmcsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSB7XG4gICAgICAgICAgICAgIGlmIChpc0FuaW1hdGlvbkZyb21FeHBlY3RlZFN0YXRlKVxuICAgICAgICAgICAgICAgIG9uRGlzY2FyZFN0ZXAocHJldktleVRvUmVtb3ZlLCBpbnNlcnRlZEF0KTtcbiAgICAgICAgICAgICAgaWYgKEZpcnN0TmV4dFNjcmVlbiAmJiBGaXJzdE5leHRTY3JlZW4udG9SZW1vdmVLZXlzKVxuICAgICAgICAgICAgICAgIEZpcnN0TmV4dFNjcmVlbi50b1JlbW92ZUtleXMuZm9yRWFjaChvbkRpc2NhcmRTdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQuZmlsdGVyKChzKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNob3VsZEtlZXAgPVxuICAgICAgICAgICAgICAgIChzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSAmJlxuICAgICAgICAgICAgICAgICAgIUZpcnN0TmV4dFNjcmVlbj8udG9SZW1vdmVLZXlzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAoaykgPT4gU3RyaW5nKGspID09PSBTdHJpbmcocz8uYXNzb2NpYXRlZEtleSksXG4gICAgICAgICAgICAgICAgICApKSB8fFxuICAgICAgICAgICAgICAgIHMhLmNyZWF0ZWRBdCEgPiBpbnNlcnRlZEF0O1xuICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkS2VlcDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiYW5pbWF0aW9uZW5kXCIsXG4gICAgICAgICAgICBhbmltYXRpb25FbmRMaXN0ZW5lciBhcyBhbnksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wc0NvbnRhaW5lciA9IHtcbiAgICAgICAgICByZWY6IGVudGVyaW5nU2NyZWVuUmVmLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjbGFzc05hbWU6IGAke3RyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFbnRlcmluZ30gJHtjb250ZW50Q2xhc3NOYW1lfWAsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBhbmltYXRpb25FbmRMaXN0ZW5lcixcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V3JhcHBlciA9IENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gICAgICAgICAgKHsgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgey4uLnByb3BzQ29udGFpbmVyfT57Y2hpbGRyZW59PC9kaXY+O1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHByb3BzQ29udGFpbmVyLFxuICAgICAgICAgIGluc2VydGVkQXQsXG4gICAgICAgICAgW3ByZXZLZXlUb1JlbW92ZSwgLi4uKEZpcnN0TmV4dFNjcmVlbj8udG9SZW1vdmVLZXlzIHx8IFtdKV0sXG4gICAgICAgICk7XG4gICAgICAgIGlmIChGaXJzdE5leHRTY3JlZW4pXG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ld1dyYXBwZXIsXG4gICAgICAgICAgICBGaXJzdE5leHRTY3JlZW4gfHxcbiAgICAgICAgICAgICAgQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICAgICAgICAgICAoKSA9PiA8UmVhY3QuRnJhZ21lbnQgLz4sXG4gICAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICBpbnNlcnRlZEF0LFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4ucmVzdE9mU2NyZWVucyxcbiAgICAgICAgICBdO1xuICAgICAgICBlbHNlIHJldHVybiBbbmV3V3JhcHBlcl07XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByZXZTdGVwLmN1cnJlbnQgPCBzdGVwKSB7XG4gICAgICBjb25zdCBzdGVwVG9EZWxldGUgPSBwcmV2U3RlcC5jdXJyZW50O1xuICAgICAgY29uc3QgcHJldktleVRvUmVtb3ZlID0gU3RyaW5nKHByZXZDaGlsZC5jdXJyZW50Py5rZXkgfHwgc3RlcFRvRGVsZXRlKTtcbiAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXApID0+IHtcbiAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcC5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBsYXN0V3JhcHBlciA9IHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXBbbGFzdEluZGV4XTtcbiAgICAgICAgY29uc3QgbmV4dFNjcmVlblJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICAgICAgaWYgKGxhc3RXcmFwcGVyKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihsYXN0V3JhcHBlci5leHRlcm5hbFByb3BzLCB7XG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCxcbiAgICAgICAgICAgIHN0eWxlOiB7IC4uLmNvbnRlbnRTdHlsZSwgV2Via2l0TWFza0ltYWdlOiB0cmFuc2l0aW9uTWFzayB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHtjb250ZW50Q2xhc3NOYW1lfSAke3RyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEV4aXRpbmd9YCxcbiAgICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiAoZTogQW5pbWF0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSBlLmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEVudGVyaW5nKVxuICAgICAgICAgICAgICAgIG5leHRTY3JlZW5SZWYuY3VycmVudD8uY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEVudGVyaW5nLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSBvbkRpc2NhcmRTdGVwKHByZXZLZXlUb1JlbW92ZSwgaW5zZXJ0ZWRBdCk7XG4gICAgICAgICAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAocykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRNYW50YWluID1cbiAgICAgICAgICAgICAgICAgICAgICBzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHMuY3JlYXRlZEF0ID4gaW5zZXJ0ZWRBdDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZE1hbnRhaW47XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3BzQ29udGFpbmVyID0ge1xuICAgICAgICAgIHJlZjogbmV4dFNjcmVlblJlZixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogYCR7Y29udGVudENsYXNzTmFtZX0gJHt0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZ31gLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdXcmFwcGVyID0gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICAgICAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHNDb250YWluZXJ9PntjaGlsZHJlbn08L2Rpdj47XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcHJvcHNDb250YWluZXIsXG4gICAgICAgICAgaW5zZXJ0ZWRBdCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5zY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwLnNsaWNlKDAsIGxhc3RJbmRleCksXG4gICAgICAgICAgbGFzdFdyYXBwZXIgfHxcbiAgICAgICAgICAgIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gICAgICAgICAgICAgICgpID0+IDxSZWFjdC5GcmFnbWVudCAvPixcbiAgICAgICAgICAgICAgXCJmYWxsYmFja1wiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgaW5zZXJ0ZWRBdCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgbmV3V3JhcHBlcixcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgfTtcbiAgfSwgW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSAmJiBsb2NrVHJhbnNpdGlvbldpZHRoKVxuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLndpZHRoID0gXCJcIjtcbiAgICBpZiAoY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggPT09IDEgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gXCJcIjtcbiAgfSwgW2NoaWxkcmVuV3JhcHBlcnMubGVuZ3RoICE9PSAxXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQgJiZcbiAgICAgIFwiZWxlbWVudElkXCIgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgIyR7cHJvcHMuZWxlbWVudElkfWAsXG4gICAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclJlZi5jdXJyZW50ITtcblxuICAgICAgICBjb25zdCBvZmZzZXRYID1cbiAgICAgICAgICBlbGVtZW50LmNsaWVudExlZnQgKyBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoIC8gMjtcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9XG4gICAgICAgICAgZWxlbWVudC5jbGllbnRUb3AgKyBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgcGVyY2VudFggPSAob2Zmc2V0WCAqIDEwMCkgLyBjbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3QgcGVyY2VudFkgPSAob2Zmc2V0WSAqIDEwMCkgLyBjbGllbnRIZWlnaHQ7XG4gICAgICAgIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQudHJhbnNmb3JtT3JpZ2luID0gYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgO1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24oY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLCB7XG4gICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiBgJHtwZXJjZW50WH0lICR7cGVyY2VudFl9JWAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZSwgcHJlVHJhbnNpdGlvbkRldGFpbHMuY3VycmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkcmVuV3JhcHBlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUub3ZlcmZsb3cgPSBcIlwiO1xuICAgIH1cbiAgfSwgW2NoaWxkcmVuV3JhcHBlcnMubGVuZ3RoXSk7XG5cbiAgY29uc3QgcHJvcHNUb1NwcmVhZCA9IHsgLi4ucHJvcHMgfSBhcyBhbnk7XG4gIGRlbGV0ZSBwcm9wc1RvU3ByZWFkLnRyYW5zaXRpb25UeXBlO1xuICBkZWxldGUgcHJvcHNUb1NwcmVhZC5jb25maWc7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgey4uLnByb3BzVG9TcHJlYWR9XG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY3VycmVudFRhcmdldDogeyBvZmZzZXRUb3AsIG9mZnNldExlZnQsIGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSxcbiAgICAgICAgICAgIGNsaWVudFgsXG4gICAgICAgICAgICBjbGllbnRZLFxuICAgICAgICAgIH0gPSBlO1xuICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBjbGllbnRYIC0gb2Zmc2V0TGVmdDtcbiAgICAgICAgICBjb25zdCBvZmZzZXRZID0gY2xpZW50WSAtIG9mZnNldFRvcDtcbiAgICAgICAgICBjb25zdCBwZXJjZW50WCA9IChvZmZzZXRYICogMTAwKSAvIGNsaWVudFdpZHRoO1xuICAgICAgICAgIGNvbnN0IHBlcmNlbnRZID0gKG9mZnNldFkgKiAxMDApIC8gY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09XG4gICAgICAgICAgICAgIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9FTEVNRU5UX0lEIHx8XG4gICAgICAgICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT1cbiAgICAgICAgICAgICAgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICAgIClcbiAgICAgICAgICAgIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQudHJhbnNmb3JtT3JpZ2luID0gYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgO1xuICAgICAgICAgIGlmIChwcm9wcy5vbkNsaWNrKSBwcm9wcy5vbkNsaWNrKGUgYXMgYW55KTtcbiAgICAgICAgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0cmFuc2l0aW9uLWNvbnRyb2xsZXJcIlxuICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMuc2VjdGlvbn0gJHtjbGFzc05hbWV9YH1cbiAgICAgID5cbiAgICAgICAgeyhjaGlsZHJlbldyYXBwZXJzIGFzIENoaWxkcmVuV3JhcHBlcltdKS5tYXAoKFdyYXBwZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZFRvUmVuZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgIChhLCBpKSA9PiAoYT8ua2V5IHx8IGkpID09PSBXcmFwcGVyPy5hc3NvY2lhdGVkS2V5LFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17YCR7V3JhcHBlciEuYXNzb2NpYXRlZEtleX0gJHtXcmFwcGVyLmNyZWF0ZWRBdH1gfT5cbiAgICAgICAgICAgICAgPD57Y2hpbGRUb1JlbmRlcn08Lz5cbiAgICAgICAgICAgIDwvV3JhcHBlcj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzIHtcbiAgU0xJREUsXG4gIFBPUF9GUk9NX0NMSUNLX09SSUdJTixcbiAgUE9QX0ZST01fRUxFTUVOVF9JRCxcbiAgRkFERSxcbiAgQ09JTl9GTElQLFxuICBNQVNLLFxuICBDVVNUT00sXG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBtYW5hZ2VzIHNtb290aCB0cmFuc2l0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCB2aWV3cyBvciBzY3JlZW5zLlxuICogSXQgaGFuZGxlcyBhbmltYXRpb25zIGFuZCBzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSBjaGlsZHJlbiBlbGVtZW50cy5cbiAqXG4gKiBTaW1wbGUgZXhwbGFuYXRpb246IFRoaXMgY29tcG9uZW50IGNvbnRyb2xzIGhvdyBjb250ZW50IGNoYW5nZXMgZnJvbSBvbmUgc2NyZWVuIHRvIGFub3RoZXIsXG4gKiBtYWtpbmcgdGhlIHRyYW5zaXRpb24gbG9vayBzbW9vdGggYW5kIHByb2Zlc3Npb25hbCB3aXRoIHZhcmlvdXMgYW5pbWF0aW9uIHN0eWxlcy5cbiAqL1xuY29uc3QgVHJhbnNpdGlvbiA9IGZvcndhcmRSZWYoX1RyYW5zaXRpb24pO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgbWFuYWdlcyBzbW9vdGggdHJhbnNpdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgdmlld3Mgb3Igc2NyZWVucy5cbiAqIEl0IGhhbmRsZXMgYW5pbWF0aW9ucyBhbmQgc3dpdGNoaW5nIGJldHdlZW4gbXVsdGlwbGUgY2hpbGRyZW4gZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQWVBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBOEMsTUFBQUcsU0FBQTtBQUFBLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVQsd0JBQUFLLEdBQUEsRUFBQUksV0FBQSxTQUFBQSxXQUFBLElBQUFKLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxvQkFBQUEsR0FBQSx3QkFBQUEsR0FBQSw0QkFBQUUsT0FBQSxFQUFBRixHQUFBLFVBQUFRLEtBQUEsR0FBQUwsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBSSxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBVCxHQUFBLFlBQUFRLEtBQUEsQ0FBQUUsR0FBQSxDQUFBVixHQUFBLFNBQUFXLE1BQUEsV0FBQUMscUJBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsR0FBQSxJQUFBaEIsR0FBQSxRQUFBZ0IsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBbkIsR0FBQSxFQUFBZ0IsR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWYsR0FBQSxFQUFBZ0IsR0FBQSxjQUFBSSxJQUFBLEtBQUFBLElBQUEsQ0FBQVYsR0FBQSxJQUFBVSxJQUFBLENBQUFDLEdBQUEsS0FBQVIsTUFBQSxDQUFBQyxjQUFBLENBQUFILE1BQUEsRUFBQUssR0FBQSxFQUFBSSxJQUFBLFlBQUFULE1BQUEsQ0FBQUssR0FBQSxJQUFBaEIsR0FBQSxDQUFBZ0IsR0FBQSxTQUFBTCxNQUFBLENBQUFULE9BQUEsR0FBQUYsR0FBQSxNQUFBUSxLQUFBLElBQUFBLEtBQUEsQ0FBQWEsR0FBQSxDQUFBckIsR0FBQSxFQUFBVyxNQUFBLFlBQUFBLE1BQUE7QUFBQSxTQUFBVyxTQUFBLElBQUFBLFFBQUEsR0FBQVQsTUFBQSxDQUFBVSxNQUFBLEdBQUFWLE1BQUEsQ0FBQVUsTUFBQSxDQUFBQyxJQUFBLGVBQUFDLE1BQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBRixDQUFBLFVBQUFHLE1BQUEsR0FBQUYsU0FBQSxDQUFBRCxDQUFBLFlBQUFWLEdBQUEsSUFBQWEsTUFBQSxRQUFBaEIsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBVSxNQUFBLEVBQUFiLEdBQUEsS0FBQVMsTUFBQSxDQUFBVCxHQUFBLElBQUFhLE1BQUEsQ0FBQWIsR0FBQSxnQkFBQVMsTUFBQSxZQUFBSCxRQUFBLENBQUFRLEtBQUEsT0FBQUgsU0FBQTtBQUFBLFNBQUFJLFFBQUFDLE1BQUEsRUFBQUMsY0FBQSxRQUFBQyxJQUFBLEdBQUFyQixNQUFBLENBQUFxQixJQUFBLENBQUFGLE1BQUEsT0FBQW5CLE1BQUEsQ0FBQXNCLHFCQUFBLFFBQUFDLE9BQUEsR0FBQXZCLE1BQUEsQ0FBQXNCLHFCQUFBLENBQUFILE1BQUEsR0FBQUMsY0FBQSxLQUFBRyxPQUFBLEdBQUFBLE9BQUEsQ0FBQUMsTUFBQSxXQUFBQyxHQUFBLFdBQUF6QixNQUFBLENBQUFFLHdCQUFBLENBQUFpQixNQUFBLEVBQUFNLEdBQUEsRUFBQUMsVUFBQSxPQUFBTCxJQUFBLENBQUFNLElBQUEsQ0FBQVYsS0FBQSxDQUFBSSxJQUFBLEVBQUFFLE9BQUEsWUFBQUYsSUFBQTtBQUFBLFNBQUFPLGNBQUFoQixNQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUYsQ0FBQSxVQUFBRyxNQUFBLFdBQUFGLFNBQUEsQ0FBQUQsQ0FBQSxJQUFBQyxTQUFBLENBQUFELENBQUEsUUFBQUEsQ0FBQSxPQUFBSyxPQUFBLENBQUFsQixNQUFBLENBQUFnQixNQUFBLE9BQUFhLE9BQUEsV0FBQTFCLEdBQUEsSUFBQTJCLGVBQUEsQ0FBQWxCLE1BQUEsRUFBQVQsR0FBQSxFQUFBYSxNQUFBLENBQUFiLEdBQUEsU0FBQUgsTUFBQSxDQUFBK0IseUJBQUEsR0FBQS9CLE1BQUEsQ0FBQWdDLGdCQUFBLENBQUFwQixNQUFBLEVBQUFaLE1BQUEsQ0FBQStCLHlCQUFBLENBQUFmLE1BQUEsS0FBQUUsT0FBQSxDQUFBbEIsTUFBQSxDQUFBZ0IsTUFBQSxHQUFBYSxPQUFBLFdBQUExQixHQUFBLElBQUFILE1BQUEsQ0FBQUMsY0FBQSxDQUFBVyxNQUFBLEVBQUFULEdBQUEsRUFBQUgsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYyxNQUFBLEVBQUFiLEdBQUEsaUJBQUFTLE1BQUE7QUFBQSxTQUFBa0IsZ0JBQUEzQyxHQUFBLEVBQUFnQixHQUFBLEVBQUE4QixLQUFBLElBQUE5QixHQUFBLEdBQUErQixjQUFBLENBQUEvQixHQUFBLE9BQUFBLEdBQUEsSUFBQWhCLEdBQUEsSUFBQWEsTUFBQSxDQUFBQyxjQUFBLENBQUFkLEdBQUEsRUFBQWdCLEdBQUEsSUFBQThCLEtBQUEsRUFBQUEsS0FBQSxFQUFBUCxVQUFBLFFBQUFTLFlBQUEsUUFBQUMsUUFBQSxvQkFBQWpELEdBQUEsQ0FBQWdCLEdBQUEsSUFBQThCLEtBQUEsV0FBQTlDLEdBQUE7QUFBQSxTQUFBK0MsZUFBQUcsR0FBQSxRQUFBbEMsR0FBQSxHQUFBbUMsWUFBQSxDQUFBRCxHQUFBLDJCQUFBbEMsR0FBQSxnQkFBQUEsR0FBQSxHQUFBb0MsTUFBQSxDQUFBcEMsR0FBQTtBQUFBLFNBQUFtQyxhQUFBRSxLQUFBLEVBQUFDLElBQUEsZUFBQUQsS0FBQSxpQkFBQUEsS0FBQSxrQkFBQUEsS0FBQSxNQUFBRSxJQUFBLEdBQUFGLEtBQUEsQ0FBQUcsTUFBQSxDQUFBQyxXQUFBLE9BQUFGLElBQUEsS0FBQUcsU0FBQSxRQUFBQyxHQUFBLEdBQUFKLElBQUEsQ0FBQXBDLElBQUEsQ0FBQWtDLEtBQUEsRUFBQUMsSUFBQSwyQkFBQUssR0FBQSxzQkFBQUEsR0FBQSxZQUFBQyxTQUFBLDREQUFBTixJQUFBLGdCQUFBRixNQUFBLEdBQUFTLE1BQUEsRUFBQVIsS0FBQTtBQUFBLFNBQUFTLHlCQUFBakMsTUFBQSxFQUFBa0MsUUFBQSxRQUFBbEMsTUFBQSx5QkFBQUosTUFBQSxHQUFBdUMsNkJBQUEsQ0FBQW5DLE1BQUEsRUFBQWtDLFFBQUEsT0FBQS9DLEdBQUEsRUFBQVUsQ0FBQSxNQUFBYixNQUFBLENBQUFzQixxQkFBQSxRQUFBOEIsZ0JBQUEsR0FBQXBELE1BQUEsQ0FBQXNCLHFCQUFBLENBQUFOLE1BQUEsUUFBQUgsQ0FBQSxNQUFBQSxDQUFBLEdBQUF1QyxnQkFBQSxDQUFBckMsTUFBQSxFQUFBRixDQUFBLE1BQUFWLEdBQUEsR0FBQWlELGdCQUFBLENBQUF2QyxDQUFBLE9BQUFxQyxRQUFBLENBQUFHLE9BQUEsQ0FBQWxELEdBQUEsdUJBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBa0Qsb0JBQUEsQ0FBQWhELElBQUEsQ0FBQVUsTUFBQSxFQUFBYixHQUFBLGFBQUFTLE1BQUEsQ0FBQVQsR0FBQSxJQUFBYSxNQUFBLENBQUFiLEdBQUEsY0FBQVMsTUFBQTtBQUFBLFNBQUF1Qyw4QkFBQW5DLE1BQUEsRUFBQWtDLFFBQUEsUUFBQWxDLE1BQUEseUJBQUFKLE1BQUEsV0FBQTJDLFVBQUEsR0FBQXZELE1BQUEsQ0FBQXFCLElBQUEsQ0FBQUwsTUFBQSxPQUFBYixHQUFBLEVBQUFVLENBQUEsT0FBQUEsQ0FBQSxNQUFBQSxDQUFBLEdBQUEwQyxVQUFBLENBQUF4QyxNQUFBLEVBQUFGLENBQUEsTUFBQVYsR0FBQSxHQUFBb0QsVUFBQSxDQUFBMUMsQ0FBQSxPQUFBcUMsUUFBQSxDQUFBRyxPQUFBLENBQUFsRCxHQUFBLGtCQUFBUyxNQUFBLENBQUFULEdBQUEsSUFBQWEsTUFBQSxDQUFBYixHQUFBLFlBQUFTLE1BQUE7QUF5QzlDLFNBQVM0QyxpQkFBaUJBLENBQ3hCQyxJQUVDLEVBZ0JEO0VBQ0EsUUFBUUEsSUFBSTtJQUNWLEtBQUtDLHdCQUF3QixDQUFDQyxTQUFTO01BQ3JDLE9BQU87UUFDTEMsUUFBUSxFQUFFO1VBQ1JDLGNBQWMsRUFBRUMseUJBQU0sQ0FBQ0MsZUFBZTtVQUN0Q0MsZUFBZSxFQUFFRix5QkFBTSxDQUFDRztRQUMxQixDQUFDO1FBQ0RDLE9BQU8sRUFBRTtVQUNQTCxjQUFjLEVBQUVDLHlCQUFNLENBQUNDLGVBQWU7VUFDdENDLGVBQWUsRUFBRUYseUJBQU0sQ0FBQ0c7UUFDMUI7TUFDRixDQUFDO0lBQ0gsS0FBS1Asd0JBQXdCLENBQUNTLElBQUk7TUFDaEMsT0FBTztRQUNMUCxRQUFRLEVBQUU7VUFDUkMsY0FBYyxFQUFFQyx5QkFBTSxDQUFDTSxlQUFlO1VBQ3RDSixlQUFlLEVBQUVGLHlCQUFNLENBQUNPO1FBQzFCLENBQUM7UUFDREgsT0FBTyxFQUFFO1VBQ1BMLGNBQWMsRUFBRUMseUJBQU0sQ0FBQ00sZUFBZTtVQUN0Q0osZUFBZSxFQUFFRix5QkFBTSxDQUFDTztRQUMxQjtNQUNGLENBQUM7SUFDSCxLQUFLWCx3QkFBd0IsQ0FBQ1ksS0FBSztNQUNqQyxPQUFPO1FBQ0xWLFFBQVEsRUFBRTtVQUNSSSxlQUFlLEVBQUVGLHlCQUFNLENBQUNTLFlBQVk7VUFDcENWLGNBQWMsRUFBRTtRQUNsQixDQUFDO1FBQ0RLLE9BQU8sRUFBRTtVQUNQRixlQUFlLEVBQUUsRUFBRTtVQUNuQkgsY0FBYyxFQUFFQyx5QkFBTSxDQUFDVTtRQUN6QjtNQUNGLENBQUM7SUFDSCxLQUFLZCx3QkFBd0IsQ0FBQ2UscUJBQXFCO0lBQ25ELEtBQUtmLHdCQUF3QixDQUFDZ0IsbUJBQW1CO01BQy9DLE9BQU87UUFDTGQsUUFBUSxFQUFFO1VBQ1JJLGVBQWUsRUFBRUYseUJBQU0sQ0FBQ2EsTUFBTTtVQUM5QmQsY0FBYyxFQUFFQyx5QkFBTSxDQUFDYztRQUN6QixDQUFDO1FBQ0RWLE9BQU8sRUFBRTtVQUNQRixlQUFlLEVBQUVGLHlCQUFNLENBQUNlLE9BQU87VUFDL0JoQixjQUFjLEVBQUVDLHlCQUFNLENBQUNnQjtRQUN6QjtNQUNGLENBQUM7SUFDSCxLQUFLcEIsd0JBQXdCLENBQUNxQixJQUFJO01BQ2hDLE9BQU87UUFDTG5CLFFBQVEsRUFBRTtVQUNSSSxlQUFlLEVBQUVGLHlCQUFNLENBQUNrQixZQUFZO1VBQ3BDbkIsY0FBYyxFQUFFQyx5QkFBTSxDQUFDbUI7UUFDekIsQ0FBQztRQUNEZixPQUFPLEVBQUU7VUFDUEYsZUFBZSxFQUFFRix5QkFBTSxDQUFDa0IsWUFBWTtVQUNwQ25CLGNBQWMsRUFBRUMseUJBQU0sQ0FBQ21CO1FBQ3pCO01BQ0YsQ0FBQztFQUNMO0FBQ0Y7QUFXQSxTQUFTQyxzQkFBc0JBLENBQzdCQyxJQUFvRSxFQUNwRWhGLEdBQVEsRUFDUmlGLHNCQUE0QyxFQUM1QztBQUNBQyxTQUFpQixFQUNqQkMsWUFBb0IsRUFDSDtFQUNoQkgsSUFBSSxDQUFTSSxTQUFTLEdBQUdGLFNBQVM7RUFDbENGLElBQUksQ0FBU0ssYUFBYSxHQUFHckYsR0FBRztFQUNoQ2dGLElBQUksQ0FBU0csWUFBWSxHQUFHQSxZQUFZO0VBQ3hDSCxJQUFJLENBQVNNLGFBQWEsR0FBR0wsc0JBQXNCO0VBQ3BELE9BQU9ELElBQUk7QUFDYjtBQUNBLFNBQVNPLFdBQVdBLENBQUFDLElBQUEsRUFZbEJDLGFBQWtELEVBQ2xEO0VBQUEsSUFBQUMsV0FBQTtFQUFBLElBWkE7TUFDRUMsSUFBSTtNQUNKQyxZQUFZO01BQ1pDLGdCQUFnQixHQUFHLEVBQUU7TUFDckJDLFFBQVE7TUFDUkMsU0FBUztNQUNUQyxhQUFhO01BQ2JDLG1CQUFtQixHQUFHLEtBQUs7TUFDM0JDLG9CQUFvQixHQUFHO0lBRVIsQ0FBQyxHQUFBVixJQUFBO0lBRGJXLEtBQUssR0FBQXJELHdCQUFBLENBQUEwQyxJQUFBLEVBQUF6RyxTQUFBO0VBSVYsTUFBTXFILFlBQVksR0FBRyxJQUFBQyxjQUFPLEVBQzFCLE1BQ0daLGFBQWEsaUJBQWdELElBQUFhLGdCQUFTLEVBQUMsQ0FBQyxFQUMzRSxDQUFDYixhQUFhLENBQ2hCLENBQUM7RUFDRCxNQUFNYyxvQkFBb0IsR0FBRyxJQUFBQyxhQUFNLEVBQWdCO0lBQ2pEQyxlQUFlLEVBQUU7RUFDbkIsQ0FBQyxDQUFDO0VBQ0YsTUFBTUMsTUFBTSxJQUFBaEIsV0FBQSxHQUFJUyxLQUFLLENBQVMsYUFBYSxDQUFDLGNBQUFULFdBQUEsY0FBQUEsV0FBQSxHQUFJLHNCQUFzQjtFQUN0RSxNQUFNLENBQUNpQixnQkFBZ0IsRUFBRUMsbUJBQW1CLENBQUMsR0FBRyxJQUFBQyxlQUFRLEVBRXRELE1BQU07SUFBQSxJQUFBQyxjQUFBO0lBQ04sTUFBTXhCLGFBQWEsR0FBRztNQUVwQnRGLEdBQUcsRUFBRW9DLE1BQU0sQ0FBQyxFQUFBMEUsY0FBQSxHQUFBaEIsUUFBUSxDQUFDSCxJQUFJLENBQUMsY0FBQW1CLGNBQUEsdUJBQWRBLGNBQUEsQ0FBZ0I5RyxHQUFHLEtBQUkyRixJQUFJLENBQUM7TUFDeENvQixLQUFLLEVBQUVuQixZQUFZO01BQ25CRyxTQUFTLEVBQUVGO0lBQ2IsQ0FBQztJQUNELE1BQU1iLElBQUksR0FBR0Qsc0JBQXNCLENBQ2pDaUMsS0FBQTtNQUFBLElBQUM7UUFBRWxCO01BQVMsQ0FBQyxHQUFBa0IsS0FBQTtNQUFBLG9CQUFLdEksTUFBQSxDQUFBUSxPQUFBLENBQUErSCxhQUFBLFFBQVMzQixhQUFhLEVBQUdRLFFBQWMsQ0FBQztJQUFBLEdBQzFEQSxRQUFRLENBQUNILElBQUksQ0FBQyxDQUFFM0YsR0FBRyxJQUFJMkYsSUFBSSxFQUMzQkwsYUFBYSxFQUNiNEIsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUNWLEVBQ0YsQ0FBQztJQUNELE9BQU8sQ0FBQ25DLElBQUksQ0FBQztFQUNmLENBQUMsQ0FBQztFQUVGLE1BQU1vQyxRQUFRLEdBQUcsSUFBQVosYUFBTSxFQUFDYixJQUFJLENBQUM7RUFDN0IsTUFBTTBCLFNBQVMsR0FBRyxJQUFBYixhQUFNLEVBQUNWLFFBQVEsQ0FBQ0gsSUFBSSxDQUFDLENBQUM7RUFFeEMsSUFBQTJCLGdCQUFTLEVBQUMsTUFBTSxNQUFNO0lBQ3BCRCxTQUFTLENBQUNFLE9BQU8sR0FBR3pCLFFBQVEsQ0FBQ0gsSUFBSSxDQUFDO0VBQ3BDLENBQUMsQ0FBQztFQUVGLElBQUEyQixnQkFBUyxFQUFDLE1BQU07SUFBQSxJQUFBRSxlQUFBLEVBQUFDLGtCQUFBLEVBQUFDLGVBQUE7SUFDZHRCLFlBQVksQ0FBQ21CLE9BQU8sQ0FBRVIsS0FBSyxDQUFDWSxRQUFRLEdBQUcsUUFBUTtJQUMvQyxNQUFNQyxpQkFBaUIsR0FDckJ6QixLQUFLLENBQUMwQixjQUFjLEtBQUt0RSx3QkFBd0IsQ0FBQ3VFLE1BQU0sR0FDcEQzQixLQUFLLENBQUM0QixNQUFNLEdBQ1oxRSxpQkFBaUIsQ0FDZjhDLEtBQUssQ0FBQzBCLGNBQWMsSUFBSXRFLHdCQUF3QixDQUFDWSxLQUNuRCxDQUFDO0lBRVAsSUFDRWtELFNBQVMsQ0FBQ0UsT0FBTyxLQUFLLElBQUksSUFDMUIsRUFBQUMsZUFBQSxHQUFBMUIsUUFBUSxDQUFDSCxJQUFJLENBQUMsY0FBQTZCLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0J4SCxHQUFHLFFBQUF5SCxrQkFBQSxHQUFLSixTQUFTLENBQUNFLE9BQU8sY0FBQUUsa0JBQUEsdUJBQWpCQSxrQkFBQSxDQUFtQnpILEdBQUcsRUFBQztJQUFBLEVBQy9DO01BQ0EsT0FBTyxNQUFNO1FBQ1hvSCxRQUFRLENBQUNHLE9BQU8sR0FBRzVCLElBQUk7TUFDekIsQ0FBQztJQUNIO0lBRUEsTUFBTTNGLEdBQUcsR0FBRyxFQUFBMEgsZUFBQSxHQUFBNUIsUUFBUSxDQUFDSCxJQUFJLENBQUMsY0FBQStCLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0IxSCxHQUFHLEtBQUkyRixJQUFJO0lBRXZDLElBQUl5QixRQUFRLENBQUNHLE9BQU8sS0FBSzVCLElBQUksSUFBSU0sbUJBQW1CLEVBQ2xERyxZQUFZLENBQUNtQixPQUFPLENBQUVSLEtBQUssQ0FBQ2lCLEtBQUssTUFBQUMsTUFBQSxDQUMvQjdCLFlBQVksQ0FBQ21CLE9BQU8sQ0FBRVcsV0FBVyxPQUMvQjtJQUVOLElBQUlkLFFBQVEsQ0FBQ0csT0FBTyxLQUFLNUIsSUFBSSxJQUFJTyxvQkFBb0IsRUFDbkRFLFlBQVksQ0FBQ21CLE9BQU8sQ0FBRVIsS0FBSyxDQUFDb0IsTUFBTSxNQUFBRixNQUFBLENBQ2hDN0IsWUFBWSxDQUFDbUIsT0FBTyxDQUFFYSxZQUFZLE9BQ2hDO0lBQ04sTUFBTUMsY0FBYyxHQUNsQmxDLEtBQUssQ0FBQzBCLGNBQWMsS0FBS3RFLHdCQUF3QixDQUFDcUIsSUFBSSxHQUNsRHVCLEtBQUssQ0FBQ21DLFdBQVcsQ0FBQ2xDLFlBQVksQ0FBQ21CLE9BQVEsQ0FBQyxHQUN4QyxFQUFFO0lBQ1IsTUFBTWdCLFVBQVUsR0FBR3JCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7O0lBRTdCO0lBQ0EsSUFBSUMsUUFBUSxDQUFDRyxPQUFPLEdBQUc1QixJQUFJLEVBQUU7TUFBQSxJQUFBNkMsbUJBQUE7TUFDM0IsTUFBTUMsWUFBWSxHQUFHckIsUUFBUSxDQUFDRyxPQUFPO01BQ3JDLE1BQU1tQixlQUFlLEdBQUcsRUFBQUYsbUJBQUEsR0FBQW5CLFNBQVMsQ0FBQ0UsT0FBTyxjQUFBaUIsbUJBQUEsdUJBQWpCQSxtQkFBQSxDQUFtQnhJLEdBQUcsS0FBSXlJLFlBQVk7TUFDOUQ3QixtQkFBbUIsQ0FBRStCLHlCQUF5QixJQUFLO1FBQ2pELE1BQU1DLGlCQUFpQixnQkFBRyxJQUFBdEMsZ0JBQVMsRUFBaUIsQ0FBQztRQUNyRCxNQUFNLENBQUN1QyxlQUFlLEVBQUUsR0FBR0MsYUFBYSxDQUFDLEdBQ3ZDSCx5QkFBeUIsQ0FBQ3RILE1BQU0sQ0FDN0IwSCxDQUFDLElBQUssQ0FBQUEsQ0FBQyxhQUFEQSxDQUFDLHVCQUFEQSxDQUFDLENBQUUxRCxhQUFhLE1BQUtqRCxNQUFNLENBQUNwQyxHQUFHLENBQ3hDLENBQUM7UUFFSCxJQUFJNkksZUFBZSxFQUFFO1VBQ25CaEosTUFBTSxDQUFDVSxNQUFNLENBQUNzSSxlQUFlLENBQUN2RCxhQUFhLEVBQUU7WUFFM0N5QixLQUFLLEVBQUF0RixhQUFBLENBQUFBLGFBQUEsS0FBT21FLFlBQVk7Y0FBRW9ELGVBQWUsRUFBRVg7WUFBYyxFQUFFO1lBQzNEdEMsU0FBUyxLQUFBa0MsTUFBQSxDQUFLTCxpQkFBaUIsQ0FBQ25FLFFBQVEsQ0FBQ0MsY0FBYztVQUN6RCxDQUFDLENBQUM7UUFDSjtRQUNBLFNBQVN1RixvQkFBb0JBLENBQUNDLEtBQXFDLEVBQUU7VUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxzQkFBQTtVQUNuRSxJQUFJRixLQUFLLENBQUN6SSxNQUFNLEtBQUt5SSxLQUFLLENBQUNHLGFBQWEsRUFBRTtVQUUxQyxNQUFNQyw0QkFBNEIsSUFBQUgscUJBQUEsR0FDaENQLGlCQUFpQixDQUFDckIsT0FBTyxjQUFBNEIscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQkksU0FBUyxDQUFDQyxRQUFRLENBQzNDNUIsaUJBQWlCLENBQUNuRSxRQUFRLENBQUNJLGVBQzdCLENBQUM7VUFDSCxDQUFBdUYsc0JBQUEsR0FBQVIsaUJBQWlCLENBQUNyQixPQUFPLGNBQUE2QixzQkFBQSxlQUF6QkEsc0JBQUEsQ0FBMkJHLFNBQVMsQ0FBQ0UsTUFBTSxDQUN6QzdCLGlCQUFpQixDQUFDbkUsUUFBUSxDQUFDSSxlQUM3QixDQUFDO1VBQ0QrQyxtQkFBbUIsQ0FBRThDLGlDQUFpQyxJQUFLO1lBQ3pELElBQUkxRCxhQUFhLEVBQUU7Y0FDakIsSUFBSXNELDRCQUE0QixFQUM5QnRELGFBQWEsQ0FBQzBDLGVBQWUsRUFBRUgsVUFBVSxDQUFDO2NBQzVDLElBQUlNLGVBQWUsSUFBSUEsZUFBZSxDQUFDMUQsWUFBWSxFQUNqRDBELGVBQWUsQ0FBQzFELFlBQVksQ0FBQ3pELE9BQU8sQ0FBQ3NFLGFBQWEsQ0FBQztZQUN2RDtZQUNBLE9BQU8wRCxpQ0FBaUMsQ0FBQ3JJLE1BQU0sQ0FBRXNJLENBQUMsSUFBSztjQUFBLElBQUFDLHFCQUFBO2NBQ3JELE1BQU1DLFVBQVUsR0FDYixDQUFBRixDQUFDLGFBQURBLENBQUMsdUJBQURBLENBQUMsQ0FBRXRFLGFBQWEsTUFBS2pELE1BQU0sQ0FBQ3NHLGVBQWUsQ0FBQyxJQUMzQyxFQUFDRyxlQUFlLGFBQWZBLGVBQWUsZ0JBQUFlLHFCQUFBLEdBQWZmLGVBQWUsQ0FBRTFELFlBQVksY0FBQXlFLHFCQUFBLGVBQTdCQSxxQkFBQSxDQUErQkUsSUFBSSxDQUNqQ0MsQ0FBQyxJQUFLM0gsTUFBTSxDQUFDMkgsQ0FBQyxDQUFDLEtBQUszSCxNQUFNLENBQUN1SCxDQUFDLGFBQURBLENBQUMsdUJBQURBLENBQUMsQ0FBRXRFLGFBQWEsQ0FDOUMsQ0FBQyxLQUNIc0UsQ0FBQyxDQUFFdkUsU0FBUyxHQUFJbUQsVUFBVTtjQUM1QixPQUFPc0IsVUFBVTtZQUNuQixDQUFDLENBQUM7VUFDSixDQUFDLENBQUM7VUFDRlgsS0FBSyxDQUFDRyxhQUFhLENBQUNXLG1CQUFtQixDQUNyQyxjQUFjLEVBQ2RmLG9CQUNGLENBQUM7UUFDSDtRQUNBLE1BQU1nQixjQUFjLEdBQUc7VUFDckJDLEdBQUcsRUFBRXRCLGlCQUFpQjtVQUV0QjVJLEdBQUc7VUFDSCtGLFNBQVMsS0FBQWtDLE1BQUEsQ0FBS0wsaUJBQWlCLENBQUNuRSxRQUFRLENBQUNJLGVBQWUsT0FBQW9FLE1BQUEsQ0FBSXBDLGdCQUFnQixDQUFFO1VBQzlFa0IsS0FBSyxFQUFBdEYsYUFBQSxLQUNBbUUsWUFBWSxDQUNoQjtVQUNEdUUsY0FBYyxFQUFFbEI7UUFDbEIsQ0FBQztRQUNELE1BQU1tQixVQUFVLEdBQUdyRixzQkFBc0IsQ0FDdkNzRixLQUFBLElBQWtCO1VBQUEsSUFBakI7WUFBRXZFO1VBQVMsQ0FBQyxHQUFBdUUsS0FBQTtVQUNYLG9CQUFPM0wsTUFBQSxDQUFBUSxPQUFBLENBQUErSCxhQUFBLFFBQVNnRCxjQUFjLEVBQUduRSxRQUFjLENBQUM7UUFDbEQsQ0FBQyxFQUNEOUYsR0FBRyxFQUNIaUssY0FBYyxFQUNkMUIsVUFBVSxFQUNWLENBQUNHLGVBQWUsRUFBRSxJQUFJLENBQUFHLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFMUQsWUFBWSxLQUFJLEVBQUUsQ0FBQyxDQUM1RCxDQUFDO1FBQ0QsSUFBSTBELGVBQWUsRUFDakIsT0FBTyxDQUNMdUIsVUFBVSxFQUNWdkIsZUFBZSxJQUNiOUQsc0JBQXNCLENBQ3BCLG1CQUFNckcsTUFBQSxDQUFBUSxPQUFBLENBQUErSCxhQUFBLENBQUN2SSxNQUFBLENBQUFRLE9BQUssQ0FBQ29MLFFBQVEsTUFBRSxDQUFDLEVBQ3hCLEVBQUUsRUFDRixDQUFDLENBQUMsRUFDRi9CLFVBQ0YsQ0FBQyxFQUNILEdBQUdPLGFBQWEsQ0FDakIsQ0FBQyxLQUNDLE9BQU8sQ0FBQ3NCLFVBQVUsQ0FBQztNQUMxQixDQUFDLENBQUM7SUFDSixDQUFDLE1BQU0sSUFBSWhELFFBQVEsQ0FBQ0csT0FBTyxHQUFHNUIsSUFBSSxFQUFFO01BQUEsSUFBQTRFLG1CQUFBO01BQ2xDLE1BQU1DLFlBQVksR0FBR3BELFFBQVEsQ0FBQ0csT0FBTztNQUNyQyxNQUFNbUIsZUFBZSxHQUFHdEcsTUFBTSxDQUFDLEVBQUFtSSxtQkFBQSxHQUFBbEQsU0FBUyxDQUFDRSxPQUFPLGNBQUFnRCxtQkFBQSx1QkFBakJBLG1CQUFBLENBQW1CdkssR0FBRyxLQUFJd0ssWUFBWSxDQUFDO01BQ3RFNUQsbUJBQW1CLENBQUUrQix5QkFBeUIsSUFBSztRQUNqRCxNQUFNOEIsU0FBUyxHQUFHOUIseUJBQXlCLENBQUMvSCxNQUFNLEdBQUcsQ0FBQztRQUN0RCxNQUFNOEosV0FBVyxHQUFHL0IseUJBQXlCLENBQUM4QixTQUFTLENBQUM7UUFDeEQsTUFBTUUsYUFBYSxnQkFBRyxJQUFBckUsZ0JBQVMsRUFBaUIsQ0FBQztRQUNqRCxJQUFJb0UsV0FBVyxFQUFFO1VBQ2Y3SyxNQUFNLENBQUNVLE1BQU0sQ0FBQ21LLFdBQVcsQ0FBQ3BGLGFBQWEsRUFBRTtZQUV2Q3lCLEtBQUssRUFBQXRGLGFBQUEsQ0FBQUEsYUFBQSxLQUFPbUUsWUFBWTtjQUFFb0QsZUFBZSxFQUFFWDtZQUFjLEVBQUU7WUFDM0R0QyxTQUFTLEtBQUFrQyxNQUFBLENBQUtwQyxnQkFBZ0IsT0FBQW9DLE1BQUEsQ0FBSUwsaUJBQWlCLENBQUM3RCxPQUFPLENBQUNMLGNBQWMsQ0FBRTtZQUM1RXlHLGNBQWMsRUFBR1MsQ0FBaUIsSUFBSztjQUFBLElBQUFDLHFCQUFBO2NBQ3JDLElBQUlELENBQUMsQ0FBQ25LLE1BQU0sS0FBS21LLENBQUMsQ0FBQ3ZCLGFBQWEsRUFBRTtjQUNsQyxJQUFJekIsaUJBQWlCLENBQUM3RCxPQUFPLENBQUNGLGVBQWUsRUFDM0MsQ0FBQWdILHFCQUFBLEdBQUFGLGFBQWEsQ0FBQ3BELE9BQU8sY0FBQXNELHFCQUFBLGVBQXJCQSxxQkFBQSxDQUF1QnRCLFNBQVMsQ0FBQ0UsTUFBTSxDQUNyQzdCLGlCQUFpQixDQUFDN0QsT0FBTyxDQUFDRixlQUM1QixDQUFDO2NBQ0gsSUFBSW1DLGFBQWEsRUFBRUEsYUFBYSxDQUFDMEMsZUFBZSxFQUFFSCxVQUFVLENBQUM7Y0FDN0QzQixtQkFBbUIsQ0FBRThDLGlDQUFpQyxJQUFLO2dCQUN6RCxNQUFNb0IsU0FBUyxHQUFHcEIsaUNBQWlDLENBQUNySSxNQUFNLENBQ3ZEc0ksQ0FBQyxJQUFLO2tCQUNMLE1BQU1vQixhQUFhLEdBQ2pCLENBQUFwQixDQUFDLGFBQURBLENBQUMsdUJBQURBLENBQUMsQ0FBRXRFLGFBQWEsTUFBS2pELE1BQU0sQ0FBQ3NHLGVBQWUsQ0FBQyxJQUM1Q2lCLENBQUMsQ0FBQ3ZFLFNBQVMsR0FBR21ELFVBQVU7a0JBQzFCLE9BQU93QyxhQUFhO2dCQUN0QixDQUNGLENBQUM7Z0JBQ0QsT0FBT0QsU0FBUztjQUNsQixDQUFDLENBQUM7WUFDSjtVQUNGLENBQUMsQ0FBQztRQUNKO1FBQ0EsTUFBTWIsY0FBYyxHQUFHO1VBQ3JCQyxHQUFHLEVBQUVTLGFBQWE7VUFFbEIzSyxHQUFHO1VBQ0grRyxLQUFLLEVBQUF0RixhQUFBLEtBQ0FtRSxZQUFZLENBQ2hCO1VBQ0RHLFNBQVMsS0FBQWtDLE1BQUEsQ0FBS3BDLGdCQUFnQixPQUFBb0MsTUFBQSxDQUFJTCxpQkFBaUIsQ0FBQzdELE9BQU8sQ0FBQ0YsZUFBZTtRQUM3RSxDQUFDO1FBQ0QsTUFBTXVHLFVBQVUsR0FBR3JGLHNCQUFzQixDQUN2Q2lHLEtBQUEsSUFBa0I7VUFBQSxJQUFqQjtZQUFFbEY7VUFBUyxDQUFDLEdBQUFrRixLQUFBO1VBQ1gsb0JBQU90TSxNQUFBLENBQUFRLE9BQUEsQ0FBQStILGFBQUEsUUFBU2dELGNBQWMsRUFBR25FLFFBQWMsQ0FBQztRQUNsRCxDQUFDLEVBQ0Q5RixHQUFHLEVBQ0hpSyxjQUFjLEVBQ2QxQixVQUNGLENBQUM7UUFDRCxPQUFPLENBQ0wsR0FBR0kseUJBQXlCLENBQUNzQyxLQUFLLENBQUMsQ0FBQyxFQUFFUixTQUFTLENBQUMsRUFDaERDLFdBQVcsSUFDVDNGLHNCQUFzQixDQUNwQixtQkFBTXJHLE1BQUEsQ0FBQVEsT0FBQSxDQUFBK0gsYUFBQSxDQUFDdkksTUFBQSxDQUFBUSxPQUFLLENBQUNvTCxRQUFRLE1BQUUsQ0FBQyxFQUN4QixVQUFVLEVBQ1YsQ0FBQyxDQUFDLEVBQ0YvQixVQUNGLENBQUMsRUFDSDZCLFVBQVUsQ0FDWDtNQUNILENBQUMsQ0FBQztJQUNKO0lBQ0EsT0FBTyxNQUFNO01BQ1hoRCxRQUFRLENBQUNHLE9BQU8sR0FBRzVCLElBQUk7SUFDekIsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDQSxJQUFJLENBQUMsQ0FBQztFQUVWLElBQUEyQixnQkFBUyxFQUFDLE1BQU07SUFDZCxJQUFJWCxnQkFBZ0IsQ0FBQy9GLE1BQU0sS0FBSyxDQUFDLElBQUlxRixtQkFBbUIsRUFDdERHLFlBQVksQ0FBQ21CLE9BQU8sQ0FBRVIsS0FBSyxDQUFDaUIsS0FBSyxHQUFHLEVBQUU7SUFDeEMsSUFBSXJCLGdCQUFnQixDQUFDL0YsTUFBTSxLQUFLLENBQUMsSUFBSXNGLG9CQUFvQixFQUN2REUsWUFBWSxDQUFDbUIsT0FBTyxDQUFFUixLQUFLLENBQUNvQixNQUFNLEdBQUcsRUFBRTtFQUMzQyxDQUFDLEVBQUUsQ0FBQ3hCLGdCQUFnQixDQUFDL0YsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBRW5DLElBQUEwRyxnQkFBUyxFQUFDLE1BQU07SUFDZCxJQUNFbkIsS0FBSyxDQUFDMEIsY0FBYyxLQUFLdEUsd0JBQXdCLENBQUNnQixtQkFBbUIsSUFDckUsV0FBVyxJQUFJNEIsS0FBSyxFQUNwQjtNQUNBLE1BQU0rRSxPQUFPLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBYSxLQUFBbkQsTUFBQSxDQUNoQzlCLEtBQUssQ0FBQ2tGLFNBQVMsQ0FDckIsQ0FBbUI7TUFFbkIsSUFBSUgsT0FBTyxFQUFFO1FBQ1gsTUFBTTtVQUFFaEQsV0FBVztVQUFFRTtRQUFhLENBQUMsR0FBR2hDLFlBQVksQ0FBQ21CLE9BQVE7UUFFM0QsTUFBTStELE9BQU8sR0FDWEosT0FBTyxDQUFDSyxVQUFVLEdBQUdMLE9BQU8sQ0FBQ00sVUFBVSxHQUFHTixPQUFPLENBQUNoRCxXQUFXLEdBQUcsQ0FBQztRQUNuRSxNQUFNdUQsT0FBTyxHQUNYUCxPQUFPLENBQUNRLFNBQVMsR0FBR1IsT0FBTyxDQUFDUyxTQUFTLEdBQUdULE9BQU8sQ0FBQzlDLFlBQVksR0FBRyxDQUFDO1FBQ2xFLE1BQU13RCxRQUFRLEdBQUlOLE9BQU8sR0FBRyxHQUFHLEdBQUlwRCxXQUFXO1FBQzlDLE1BQU0yRCxRQUFRLEdBQUlKLE9BQU8sR0FBRyxHQUFHLEdBQUlyRCxZQUFZO1FBQy9DN0Isb0JBQW9CLENBQUNnQixPQUFPLENBQUNkLGVBQWUsTUFBQXdCLE1BQUEsQ0FBTTJELFFBQVEsUUFBQTNELE1BQUEsQ0FBSzRELFFBQVEsTUFBRztRQUUxRWhNLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDNkYsWUFBWSxDQUFDbUIsT0FBTyxDQUFFUixLQUFLLEVBQUU7VUFDekNOLGVBQWUsS0FBQXdCLE1BQUEsQ0FBSzJELFFBQVEsUUFBQTNELE1BQUEsQ0FBSzRELFFBQVE7UUFDM0MsQ0FBQyxDQUFDO01BQ0o7SUFDRixDQUFDLE1BQU07TUFDTGhNLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDNkYsWUFBWSxDQUFDbUIsT0FBTyxDQUFFUixLQUFLLEVBQUVSLG9CQUFvQixDQUFDZ0IsT0FBTyxDQUFDO0lBQzFFO0lBRUEsSUFBSVosZ0JBQWdCLENBQUMvRixNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ2pDd0YsWUFBWSxDQUFDbUIsT0FBTyxDQUFFUixLQUFLLENBQUNZLFFBQVEsR0FBRyxFQUFFO0lBQzNDO0VBQ0YsQ0FBQyxFQUFFLENBQUNoQixnQkFBZ0IsQ0FBQy9GLE1BQU0sQ0FBQyxDQUFDO0VBRTdCLE1BQU1rTCxhQUFhLEdBQUFySyxhQUFBLEtBQVEwRSxLQUFLLENBQVM7RUFDekMsT0FBTzJGLGFBQWEsQ0FBQ2pFLGNBQWM7RUFDbkMsT0FBT2lFLGFBQWEsQ0FBQy9ELE1BQU07RUFFM0Isb0JBQ0VySixNQUFBLENBQUFRLE9BQUEsQ0FBQStILGFBQUEsQ0FBQXZJLE1BQUEsQ0FBQVEsT0FBQSxDQUFBb0wsUUFBQSxxQkFDRTVMLE1BQUEsQ0FBQVEsT0FBQSxDQUFBK0gsYUFBQSxZQUFBM0csUUFBQSxLQUNNd0wsYUFBYTtJQUNqQkMsT0FBTyxFQUFHbkIsQ0FBQyxJQUFLO01BQ2QsTUFBTTtRQUNKdkIsYUFBYSxFQUFFO1VBQUVzQyxTQUFTO1VBQUVILFVBQVU7VUFBRXRELFdBQVc7VUFBRUU7UUFBYSxDQUFDO1FBQ25FNEQsT0FBTztRQUNQQztNQUNGLENBQUMsR0FBR3JCLENBQUM7TUFDTCxNQUFNVSxPQUFPLEdBQUdVLE9BQU8sR0FBR1IsVUFBVTtNQUNwQyxNQUFNQyxPQUFPLEdBQUdRLE9BQU8sR0FBR04sU0FBUztNQUNuQyxNQUFNQyxRQUFRLEdBQUlOLE9BQU8sR0FBRyxHQUFHLEdBQUlwRCxXQUFXO01BQzlDLE1BQU0yRCxRQUFRLEdBQUlKLE9BQU8sR0FBRyxHQUFHLEdBQUlyRCxZQUFZO01BRS9DLElBQ0VqQyxLQUFLLENBQUMwQixjQUFjLEtBQ2xCdEUsd0JBQXdCLENBQUNnQixtQkFBbUIsSUFDOUM0QixLQUFLLENBQUMwQixjQUFjLEtBQ2xCdEUsd0JBQXdCLENBQUNlLHFCQUFxQixFQUVoRGlDLG9CQUFvQixDQUFDZ0IsT0FBTyxDQUFDZCxlQUFlLE1BQUF3QixNQUFBLENBQU0yRCxRQUFRLFFBQUEzRCxNQUFBLENBQUs0RCxRQUFRLE1BQUc7TUFDNUUsSUFBSTFGLEtBQUssQ0FBQzRGLE9BQU8sRUFBRTVGLEtBQUssQ0FBQzRGLE9BQU8sQ0FBQ25CLENBQVEsQ0FBQztJQUM1QyxDQUFFO0lBRUZWLEdBQUcsRUFBRTlELFlBQWE7SUFDbEJMLFNBQVMsS0FBQWtDLE1BQUEsQ0FBS3RFLHlCQUFNLENBQUN1SSxPQUFPLE9BQUFqRSxNQUFBLENBQUlsQyxTQUFTO0VBQUcsSUFFMUNZLGdCQUFnQixDQUF1QndGLEdBQUcsQ0FBRUMsT0FBTyxJQUFLO0lBQ3hELE1BQU1DLGFBQWEsR0FBR3ZHLFFBQVEsQ0FBQ3dHLElBQUksQ0FDakMsQ0FBQ3ZELENBQUMsRUFBRXJJLENBQUMsS0FBSyxDQUFDLENBQUFxSSxDQUFDLGFBQURBLENBQUMsdUJBQURBLENBQUMsQ0FBRS9JLEdBQUcsS0FBSVUsQ0FBQyxPQUFNMEwsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUvRyxhQUFhLENBQ3BELENBQUM7SUFDRCxvQkFDRTNHLE1BQUEsQ0FBQVEsT0FBQSxDQUFBK0gsYUFBQSxDQUFDbUYsT0FBTztNQUFDcE0sR0FBRyxLQUFBaUksTUFBQSxDQUFLbUUsT0FBTyxDQUFFL0csYUFBYSxPQUFBNEMsTUFBQSxDQUFJbUUsT0FBTyxDQUFDaEgsU0FBUztJQUFHLGdCQUM3RDFHLE1BQUEsQ0FBQVEsT0FBQSxDQUFBK0gsYUFBQSxDQUFBdkksTUFBQSxDQUFBUSxPQUFBLENBQUFvTCxRQUFBLFFBQUcrQixhQUFnQixDQUNaLENBQUM7RUFFZCxDQUFDLENBQ00sQ0FDVCxDQUFDO0FBRVA7QUFBQyxJQUVXOUksd0JBQXdCLEdBQUFnSixPQUFBLENBQUFoSix3QkFBQSwwQkFBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCLENBQXhCQSx3QkFBd0I7RUFBeEJBLHdCQUF3QixDQUF4QkEsd0JBQXdCO0VBQXhCQSx3QkFBd0IsQ0FBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCLENBQXhCQSx3QkFBd0I7RUFBeEJBLHdCQUF3QixDQUF4QkEsd0JBQXdCO0VBQXhCQSx3QkFBd0IsQ0FBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCLENBQXhCQSx3QkFBd0I7RUFBQSxPQUF4QkEsd0JBQXdCO0FBQUE7QUFVcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNaUosVUFBVSxnQkFBRyxJQUFBQyxpQkFBVSxFQUFDbEgsV0FBVyxDQUFDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUhBLElBQUFtSCxRQUFBLEdBQUFILE9BQUEsQ0FBQXJOLE9BQUEsR0FJZXNOLFVBQVUifQ==
|