@covalent/guided-tour 11.5.8 → 11.5.10
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"covalent-guided-tour.mjs","sources":["../tmp-esm2022/lib/guided.tour.js","../tmp-esm2022/lib/guided-tour.service.js","../tmp-esm2022/lib/guided-tour.module.js","../tmp-esm2022/covalent-guided-tour.js"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport { timer, Subject, BehaviorSubject, merge, fromEvent, forkJoin, } from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\nexport var ITourEvent;\n(function (ITourEvent) {\n ITourEvent[\"click\"] = \"click\";\n ITourEvent[\"pointerover\"] = \"pointerover\";\n ITourEvent[\"keyup\"] = \"keyup\";\n ITourEvent[\"added\"] = \"added\";\n ITourEvent[\"removed\"] = \"removed\";\n})(ITourEvent || (ITourEvent = {}));\nclass TourButtonsActions {\n}\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\nconst overriddenEvents = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\nconst keyEvents = new Map([\n [13, 'enter'],\n [27, 'esc'],\n]);\nconst defaultStepOptions = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\nconst MAT_ICON_BUTTON = 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';\nconst MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\nexport class CovalentGuidedTour extends TourButtonsActions {\n _destroyedEvent$;\n shepherdTour;\n stepOptions;\n constructor(stepOptions = defaultStepOptions) {\n super();\n this.stepOptions = stepOptions;\n this.newTour();\n }\n newTour(opts) {\n this.shepherdTour = new Shepherd.Tour(Object.assign({\n defaultStepOptions: this.stepOptions,\n }, opts));\n this._destroyedEvent$ = new Subject();\n // listen to cancel and complete to clean up abortOn events\n merge(fromEvent(this.shepherdTour, 'cancel'), fromEvent(this.shepherdTour, 'complete'))\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$ = [];\n opts.abortOn.forEach((abortOn) => {\n const abortEvent$ = new Subject();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n const abortSubs = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n back() {\n this.shepherdTour.back();\n }\n cancel() {\n this.shepherdTour.cancel();\n }\n next() {\n this.shepherdTour.next();\n }\n finish() {\n this.shepherdTour.complete();\n }\n addSteps(steps) {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n start() {\n this.shepherdTour.start();\n }\n _prepareTour(originalSteps, finishLabel = 'finish') {\n // create Subjects for back and forward events\n const backEvent$ = new Subject();\n const forwardEvent$ = new Subject();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$ = new Subject();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function () {\n // get all the footers that are available in the DOM\n const footers = Array.from(document.querySelectorAll('.shepherd-footer'));\n // get the last footer since Shepherd always puts the active one at the end\n const footer = footers[footers.length - 1];\n // generate steps html element\n const progress = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n let stepTotal = 0;\n const steps = originalSteps.map((step) => {\n let showProgress = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function () {\n return;\n };\n }\n else if (step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n const finishButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n const voidButton = {\n text: '',\n action() {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n const totalSteps = steps.length;\n steps.forEach((step, index) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n }\n else {\n this.shepherdTour.back();\n }\n },\n classes: step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n }\n else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n }\n else {\n step.buttons = [backButton, nextButton];\n }\n }\n // checks \"advanceOn\" to override listeners\n let advanceOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if ((typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve) => {\n const additionalCapabilitiesSetup = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n const advanceArr$ = [];\n advanceOn.forEach((_) => {\n const advanceEvent$ = new Subject();\n advanceArr$.push(advanceEvent$);\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(_, step.advanceOnOptions, advanceEvent$, destroyedEvent$);\n });\n const advanceSubs = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n }\n else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$ = [];\n step.abortOn.forEach((abortOn) => {\n const abortEvent$ = new Subject();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, destroyedEvent$);\n });\n const abortSubs = merge(...abortArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$)))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n const _stopTimer$ = new Subject();\n const _retriesReached$ = new Subject();\n const _retryAttempts$ = new BehaviorSubject(-1);\n let id;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n }\n else if (typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string') {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (this.shepherdTour.getCurrentStep() ===\n this.shepherdTour.steps[0]) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(skip(1), skipWhile((val) => {\n if (step.attachToOptions &&\n step.attachToOptions.retries !== undefined) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }), takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$)))\n .subscribe((attempts) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (step.attachToOptions &&\n step.attachToOptions.skipIfNotFound) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (this.shepherdTour.steps.indexOf(this.shepherdTour.getCurrentStep()) === 0) {\n this.shepherdTour.next();\n }\n else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n }\n else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n }\n else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n }\n else {\n // tslint:disable-next-line:no-console\n console.warn(`Retries reached trying to find ${id}. Retried ${attempts} times.`);\n // else we show the step regardless\n resolve();\n }\n });\n // we start a timer of attempts to find an element in the dom\n timer((step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW, (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL)\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$)))\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n }\n else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n }\n else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer((step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW)\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n _bindEvent(eventOn, eventOnOptions, event$, destroyedEvent$) {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs = timer((eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW, (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL)\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n }\n else if (event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(filter(($event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n }\n else {\n return true;\n }\n }), takeUntil(merge(event$.asObservable(), destroyedEvent$)))\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n }\n else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLnRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2xpYi9ndWlkZWQudG91ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxHQUNULE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszRSxNQUFNLENBQU4sSUFBWSxVQU1YO0FBTkQsV0FBWSxVQUFVO0lBQ3BCLDZCQUFpQixDQUFBO0lBQ2pCLHlDQUE2QixDQUFBO0lBQzdCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLGlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQXNDRCxNQUFlLGtCQUFrQjtDQVFoQztBQUVELE1BQU0sc0NBQXNDLEdBQUcsR0FBRyxDQUFDO0FBQ25ELE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBRTFDLE1BQU0sZ0JBQWdCLEdBQWE7SUFDakMsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLFdBQVc7SUFDdEIsVUFBVSxDQUFDLE9BQU87SUFDbEIsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLEtBQUs7Q0FDakIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUF3QixJQUFJLEdBQUcsQ0FBaUI7SUFDN0QsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO0NBQ1osQ0FBQyxDQUFDO0FB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Q0FBQyxDQUFDLENBQUM7b0JBQ0gsaURBQWlEO29CQUNqRCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsT0FBTyxFQUFFLElBQUk7d0JBQ2IsVUFBVSxFQUFFLElBQUk7cUJBQ2pCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoZXBoZXJkIGZyb20gJ3NoZXBoZXJkLmpzJztcbmltcG9ydCB7XG4gIHRpbWVyLFxuICBTdWJqZWN0LFxuICBCZWhhdmlvclN1YmplY3QsXG4gIG1lcmdlLFxuICBTdWJzY3JpcHRpb24sXG4gIGZyb21FdmVudCxcbiAgZm9ya0pvaW4sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwV2hpbGUsIGZpbHRlciwgc2tpcCwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIFRvdXJTdGVwID0gU2hlcGhlcmQuU3RlcC5TdGVwT3B0aW9ucztcbmV4cG9ydCB0eXBlIFRvdXJTdGVwQnV0dG9uID0gU2hlcGhlcmQuU3RlcC5TdGVwT3B0aW9uc0J1dHRvbjtcblxuZXhwb3J0IGVudW0gSVRvdXJFdmVudCB7XG4gICdjbGljaycgPSAnY2xpY2snLFxuICAncG9pbnRlcm92ZXInID0gJ3BvaW50ZXJvdmVyJyxcbiAgJ2tleXVwJyA9ICdrZXl1cCcsXG4gICdhZGRlZCcgPSAnYWRkZWQnLCAvLyBhZGRlZCB0byBET01cbiAgJ3JlbW92ZWQnID0gJ3JlbW92ZWQnLCAvLyByZW1vdmVkIGZyb20gRE9NXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJFdmVudE9uIHtcbiAgc2VsZWN0b3I/OiBzdHJpbmc7IC8vIGNzcyBzZWxlY3RvclxuICBldmVudD86IGtleW9mIHR5cGVvZiBJVG91ckV2ZW50OyAvLyBjbGljaywgcG9pbnRlcm92ZXIsIGtleXVwLCBhZGRlZCwgcmVtb3ZlZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyRXZlbnRPbk9wdGlvbnMge1xuICB0aW1lQmVmb3JlU2hvdz86IG51bWJlcjsgLy8gZGVsYXkgYmVmb3JlIHN0ZXAgaXMgZGlzcGxheWVkXG4gIGludGVydmFsPzogbnVtYmVyOyAvLyB0aW1lIGJldHdlZW4gc2VhcmNoZXMgZm9yIGVsZW1lbnQsIGRlZmF1bHRzIHRvIDUwMG1zXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJPcHRpb25zIGV4dGVuZHMgU2hlcGhlcmQuVG91ci5Ub3VyT3B0aW9ucyB7XG4gIGFib3J0T24/OiBJVG91ckV2ZW50T25bXTsgLy8gZXZlbnRzIHRvIGFib3J0IG9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJTdGVwQXR0YWNoVG9PcHRpb25zIGV4dGVuZHMgSVRvdXJFdmVudE9uT3B0aW9ucyB7XG4gIGhpZ2hsaWdodD86IGJvb2xlYW47XG4gIHJldHJpZXM/OiBudW1iZXI7IC8vICMgbnVtIG9mIGF0dGVtcHRzIHRvIGZpbmQgZWxlbWVudFxuICBza2lwSWZOb3RGb3VuZD86IGJvb2xlYW47IC8vIGlmIGVsZW1lbnQgaXMgbm90IGZvdW5kIGFmdGVyIG4gcmV0cmllcywgbW92ZSBvbiB0byBuZXh0IHN0ZXBcbiAgZWxzZT86IHN0cmluZzsgLy8gaWYgZWxlbWVudCBpcyBub3QgZm91bmQsIGdvIHRvIHN0ZXAgd2l0aCB0aGlzIGlkXG4gIGdvQmFja1RvPzogc3RyaW5nOyAvLyBiYWNrIGJ1dHRvbiBnb2VzIGJhY2sgdG8gc3RlcCB3aXRoIHRoaXMgaWRcbiAgc2tpcEZyb21TdGVwQ291bnQ/OiBib29sZWFuOyAvLyBzaG93L2hpZGUgcHJvZ3Jlc3Mgb24gc3RlcFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyU3RlcEFkdmFuY2VPbk9wdGlvbnMgZXh0ZW5kcyBJVG91ckV2ZW50T25PcHRpb25zIHtcbiAganVtcFRvPzogc3RyaW5nOyAvLyBuZXh0IGJ1dHRvbiB3aWxsIGp1bXAgdG8gc3RlcCB3aXRoIHRoaXMgaWRcbiAgYWxsb3dHb0JhY2s/OiBib29sZWFuOyAvLyBhbGxvdyBiYWNrIHdpdGhpbiB0aGlzIHN0ZXBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91clN0ZXAgZXh0ZW5kcyBUb3VyU3RlcCB7XG4gIGF0dGFjaFRvT3B0aW9ucz86IElUb3VyU3RlcEF0dGFjaFRvT3B0aW9ucztcbiAgYWR2YW5jZU9uT3B0aW9ucz86IElUb3VyU3RlcEFkdmFuY2VPbk9wdGlvbnM7XG4gIGFkdmFuY2VPbj86IElUb3VyRXZlbnRPbltdIHwgSVRvdXJFdmVudE9uIHwgYW55O1xuICBhYm9ydE9uPzogSVRvdXJFdmVudE9uW107XG4gIGNvdW50PzogbnVtYmVyO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBUb3VyQnV0dG9uc0FjdGlvbnMge1xuICBhYnN0cmFjdCBuZXh0KCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgYmFjaygpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGNhbmNlbCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGZpbmlzaCgpOiB2b2lkO1xufVxuXG5jb25zdCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyA9IDEwMDtcbmNvbnN0IFNIRVBIRVJEX0RFRkFVTFRfRklORF9JTlRFUlZBTCA9IDUwMDtcbmNvbnN0IFNIRVBIRVJEX0RFRkFVTFRfRklORF9BVFRFTVBUUyA9IDIwO1xuXG5jb25zdCBvdmVycmlkZGVuRXZlbnRzOiBzdHJpbmdbXSA9IFtcbiAgSVRvdXJFdmVudC5jbGljayxcbiAgSVRvdXJFdmVudC5wb2ludGVyb3ZlcixcbiAgSVRvdXJFdmVudC5yZW1vdmVkLFxuICBJVG91ckV2ZW50LmFkZGVkLFxuICBJVG91ckV2ZW50LmtleXVwLFxuXTtcblxuY29uc3Qga2V5RXZlbnRzOiBNYXA8bnVtYmVyLCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oW1xuICBbMTMsICdlbnRlciddLFxuICBbMjcsICdlc2MnXSxcbl0pO1xuXG5jb25zdCBkZWZhdWx0U3RlcE9wdGlvbnM6IFRvdXJTdGVwID0ge1xuICBzY3JvbGxUbzogeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9LFxuICBjYW5jZWxJY29uOiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfSxcbn07XG5cbmNvbnN0IE1BVF9JQ09OX0JVVFRPTiA9XG4gICdtZGMtaWNvbi1idXR0b24gbWF0ZXJpYWwtaWNvbnMgbWF0LW1kYy1pY29uLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbi1iYXNlJztcbmNvbnN0IE1BVF9CVVRUT04gPSAnbWRjLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbi1iYXNlJztcbmNvbnN0IE1BVF9CVVRUT05fSU5WSVNJQkxFID0gJ3NoZXBoZXJkLXZvaWQtYnV0dG9uJztcblxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91ciBleHRlbmRzIFRvdXJCdXR0b25zQWN0aW9ucyB7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZEV2ZW50JCE6IFN1YmplY3Q8dm9pZD47XG5cbiAgc2hlcGhlcmRUb3VyITogU2hlcGhlcmQuVG91cjtcbiAgc3RlcE9wdGlvbnM6IElUb3VyU3RlcDtcblxuICBjb25zdHJ1Y3RvcihzdGVwT3B0aW9uczogSVRvdXJTdGVwID0gZGVmYXVsdFN0ZXBPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuc3RlcE9wdGlvbnMgPSBzdGVwT3B0aW9ucztcbiAgICB0aGlzLm5ld1RvdXIoKTtcbiAgfVxuXG4gIG5ld1RvdXIob3B0cz86IElUb3VyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyID0gbmV3IFNoZXBoZXJkLlRvdXIoXG4gICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICB7XG4gICAgICAgICAgZGVmYXVsdFN0ZXBPcHRpb25zOiB0aGlzLnN0ZXBPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLy8gbGlzdGVuIHRvIGNhbmNlbCBhbmQgY29tcGxldGUgdG8gY2xlYW4gdXAgYWJvcnRPbiBldmVudHNcbiAgICBtZXJnZShcbiAgICAgIGZyb21FdmVudCh0aGlzLnNoZXBoZXJkVG91ciwgJ2NhbmNlbCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCAnY29tcGxldGUnKVxuICAgIClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICBpZiAob3B0cyAmJiBvcHRzLmFib3J0T24pIHtcbiAgICAgIGNvbnN0IGFib3J0QXJyJDogU3ViamVjdDx2b2lkPltdID0gW107XG4gICAgICBvcHRzLmFib3J0T24uZm9yRWFjaCgoYWJvcnRPbjogSVRvdXJFdmVudE9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgYWJvcnRBcnIkLnB1c2goYWJvcnRFdmVudCQpO1xuICAgICAgICB0aGlzLl9iaW5kRXZlbnQoYWJvcnRPbiwgdW5kZWZpbmVkLCBhYm9ydEV2ZW50JCwgdGhpcy5fZGVzdHJveWVkRXZlbnQkKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhYm9ydFN1YnM6IFN1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLmFib3J0QXJyJClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNhbmNlbCgpO1xuICB9XG5cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gIH1cblxuICBmaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFkZFN0ZXBzKHN0ZXBzOiBJVG91clN0ZXBbXSk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKHRoaXMuX3ByZXBhcmVUb3VyKHN0ZXBzKSk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5zdGFydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wcmVwYXJlVG91cihcbiAgICBvcmlnaW5hbFN0ZXBzOiBJVG91clN0ZXBbXSxcbiAgICBmaW5pc2hMYWJlbCA9ICdmaW5pc2gnXG4gICk6IElUb3VyU3RlcFtdIHtcbiAgICAvLyBjcmVhdGUgU3ViamVjdHMgZm9yIGJhY2sgYW5kIGZvcndhcmQgZXZlbnRzXG4gICAgY29uc3QgYmFja0V2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgY29uc3QgZm9yd2FyZEV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgbGV0IF9iYWNrRmxvdyA9IGZhbHNlO1xuICAgIC8vIGNyZWF0ZSBTdWJqZWN0IGZvciB5b3VyIGVuZFxuICAgIGNvbnN0IGRlc3Ryb3llZEV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBzdGVwIHByb2dyZXNzIGluIHRoZSBmb290ZXIgb2YgdGhlIHNoZXBoZXJkIHRvb2x0aXBcbiAgICAgKi9cbiAgICBjb25zdCBhcHBlbmRQcm9ncmVzc0Z1bmMgPSBmdW5jdGlvbiAodGhpczogYW55KTogdm9pZCB7XG4gICAgICAvLyBnZXQgYWxsIHRoZSBmb290ZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBpbiB0aGUgRE9NXG4gICAgICBjb25zdCBmb290ZXJzOiBFbGVtZW50W10gPSBBcnJheS5mcm9tPEVsZW1lbnQ+KFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2hlcGhlcmQtZm9vdGVyJylcbiAgICAgICk7XG4gICAgICAvLyBnZXQgdGhlIGxhc3QgZm9vdGVyIHNpbmNlIFNoZXBoZXJkIGFsd2F5cyBwdXRzIHRoZSBhY3RpdmUgb25lIGF0IHRoZSBlbmRcbiAgICAgIGNvbnN0IGZvb3RlcjogRWxlbWVudCA9IGZvb3RlcnNbZm9vdGVycy5sZW5ndGggLSAxXTtcbiAgICAgIC8vIGdlbmVyYXRlIHN0ZXBzIGh0bWwgZWxlbWVudFxuICAgICAgY29uc3QgcHJvZ3Jlc3M6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHByb2dyZXNzLmNsYXNzTmFtZSA9ICdzaGVwaGVyZC1wcm9ncmVzcyc7XG4gICAgICBwcm9ncmVzcy5pbm5lclRleHQgPSBgJHt0aGlzLnNoZXBoZXJkVG91ci5jdXJyZW50U3RlcC5vcHRpb25zLmNvdW50fS8ke3N0ZXBUb3RhbH1gO1xuICAgICAgLy8gaW5zZXJ0IGludG8gdGhlIGZvb3RlciBiZWZvcmUgdGhlIGZpcnN0IGJ1dHRvblxuICAgICAgZm9vdGVyLmluc2VydEJlZm9yZShwcm9ncmVzcywgZm9vdGVyLnF1ZXJ5U2VsZWN0b3IoJy5zaGVwaGVyZC1idXR0b24nKSk7XG4gICAgfTtcblxuICAgIGxldCBzdGVwVG90YWwgPSAwO1xuICAgIGNvbnN0IHN0ZXBzOiBJVG91clN0ZXBbXSA9IG9yaWdpbmFsU3RlcHMubWFwKChzdGVwOiBJVG91clN0ZXApID0+IHtcbiAgICAgIGxldCBzaG93UHJvZ3Jlc3M6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8vXG4gICAgICB9O1xuICAgICAgaWYgKHN0ZXAuYXR0YWNoVG9PcHRpb25zPy5za2lwRnJvbVN0ZXBDb3VudCA9PT0gdHJ1ZSkge1xuICAgICAgICBzaG93UHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnM/LnNraXBGcm9tU3RlcENvdW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnM/LnNraXBGcm9tU3RlcENvdW50ID09PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIHN0ZXAuY291bnQgPSArK3N0ZXBUb3RhbDtcbiAgICAgICAgc2hvd1Byb2dyZXNzID0gYXBwZW5kUHJvZ3Jlc3NGdW5jLmJpbmQodGhpcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RlcCwge1xuICAgICAgICB3aGVuOiB7XG4gICAgICAgICAgc2hvdzogc2hvd1Byb2dyZXNzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaW5pc2hCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgdGV4dDogZmluaXNoTGFiZWwsXG4gICAgICBhY3Rpb246IHRoaXNbJ2ZpbmlzaCddLmJpbmQodGhpcyksXG4gICAgICBjbGFzc2VzOiBNQVRfQlVUVE9OLFxuICAgIH07XG5cbiAgICBjb25zdCB2b2lkQnV0dG9uOiBUb3VyU3RlcEJ1dHRvbiA9IHtcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgYWN0aW9uKCk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICB9LFxuICAgICAgY2xhc3NlczogTUFUX0JVVFRPTl9JTlZJU0lCTEUsXG4gICAgfTtcblxuICAgIC8vIGxpc3RlbiB0byB0aGUgZGVzdHJveWVkIGV2ZW50IHRvIGNsZWFuIHVwIGFsbCB0aGUgc3RyZWFtc1xuICAgIHRoaXMuX2Rlc3Ryb3llZEV2ZW50JC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBiYWNrRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICBmb3J3YXJkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICBkZXN0cm95ZWRFdmVudCQubmV4dCgpO1xuICAgICAgZGVzdHJveWVkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbFN0ZXBzOiBudW1iZXIgPSBzdGVwcy5sZW5ndGg7XG4gICAgc3RlcHMuZm9yRWFjaCgoc3RlcDogSVRvdXJTdGVwLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAvLyBjcmVhdGUgYnV0dG9ucyBzcGVjaWZpYyBmb3IgdGhlIHN0ZXBcbiAgICAgIC8vIHRoaXMgaXMgZG9uZSB0byBjcmVhdGUgbW9yZSBjb250cm9sIG9uIGV2ZW50c1xuICAgICAgY29uc3QgbmV4dEJ1dHRvbjogVG91clN0ZXBCdXR0b24gPSB7XG4gICAgICAgIHRleHQ6ICdjaGV2cm9uX3JpZ2h0JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gaW50ZXJjZXB0IHRoZSBuZXh0IGFjdGlvbiBhbmQgdHJpZ2dlciBldmVudFxuICAgICAgICAgIGZvcndhcmRFdmVudCQubmV4dCgpO1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczogTUFUX0lDT05fQlVUVE9OLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGJhY2tCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgICB0ZXh0OiAnY2hldnJvbl9sZWZ0JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gaW50ZXJjZXB0IHRoZSBiYWNrIGFjdGlvbiBhbmQgdHJpZ2dlciBldmVudFxuICAgICAgICAgIGJhY2tFdmVudCQubmV4dCgpO1xuICAgICAgICAgIF9iYWNrRmxvdyA9IHRydWU7XG4gICAgICAgICAgLy8gY2hlY2sgaWYgJ2dvQmFja1RvJyBpcyBzZXQgdG8ganVtcCB0byBhIHBhcnRpY3VsYXIgc3RlcCwgZWxzZSBqdXN0IGdvIGJhY2tcbiAgICAgICAgICBpZiAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuZ29CYWNrVG8pIHtcbiAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLnNob3coc3RlcC5hdHRhY2hUb09wdGlvbnMuZ29CYWNrVG8sIGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczpcbiAgICAgICAgICBzdGVwLmFkdmFuY2VPbk9wdGlvbnM/LmFsbG93R29CYWNrID09PSBmYWxzZVxuICAgICAgICAgICAgPyBNQVRfQlVUVE9OX0lOVklTSUJMRVxuICAgICAgICAgICAgOiBNQVRfSUNPTl9CVVRUT04sXG4gICAgICB9O1xuXG4gICAgICAvLyBjaGVjayBpZiBoaWdobGlnaHQgd2FzIHByb3ZpZGVkIGZvciB0aGUgc3RlcCwgZWxzZSBmYWxsYmFjayBpbnRvIHNoZXBoZXJkcyB1c2FnZVxuICAgICAgc3RlcC5oaWdobGlnaHRDbGFzcyA9XG4gICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLmhpZ2hsaWdodFxuICAgICAgICAgID8gJ3NoZXBoZXJkLWhpZ2hsaWdodCdcbiAgICAgICAgICA6IHN0ZXAuaGlnaGxpZ2h0Q2xhc3M7XG5cbiAgICAgIC8vIEFkZGluZyBidXR0b25zIGluIHRoZSBzdGVwcyBpZiBubyBidXR0b25zIGFyZSBkZWZpbmVkXG4gICAgICBpZiAoIXN0ZXAuYnV0dG9ucyB8fCBzdGVwLmJ1dHRvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgIC8vIGZpcnN0IHN0ZXBcbiAgICAgICAgICBzdGVwLmJ1dHRvbnMgPSBbbmV4dEJ1dHRvbl07XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IHRvdGFsU3RlcHMgLSAxKSB7XG4gICAgICAgICAgLy8gbGFzdCBzdGVwXG4gICAgICAgICAgc3RlcC5idXR0b25zID0gW2JhY2tCdXR0b24sIGZpbmlzaEJ1dHRvbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RlcC5idXR0b25zID0gW2JhY2tCdXR0b24sIG5leHRCdXR0b25dO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrcyBcImFkdmFuY2VPblwiIHRvIG92ZXJyaWRlIGxpc3RlbmVyc1xuICAgICAgbGV0IGFkdmFuY2VPbjogSVRvdXJFdmVudE9uW10gfCBJVG91ckV2ZW50T24gPSBzdGVwLmFkdmFuY2VPbjtcbiAgICAgIC8vIHJlbW92ZSB0aGUgc2hlcGhlcmQgXCJhZHZhbmNlT25cIiBpbmZhdm9yIG9mIG91cnMgaWYgdGhlIGV2ZW50IGlzIHBhcnQgb2Ygb3VyIGxpc3RcbiAgICAgIGlmIChcbiAgICAgICAgKHR5cGVvZiBhZHZhbmNlT24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWR2YW5jZU9uKSAmJlxuICAgICAgICAgIGFkdmFuY2VPbi5ldmVudCAmJlxuICAgICAgICAgIG92ZXJyaWRkZW5FdmVudHMuaW5kZXhPZihhZHZhbmNlT24uZXZlbnQuc3BsaXQoJy4nKVswXSkgPiAtMSkgfHxcbiAgICAgICAgYWR2YW5jZU9uIGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICkge1xuICAgICAgICBzdGVwLmFkdmFuY2VPbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3RlcC5idXR0b25zID1cbiAgICAgICAgICBzdGVwLmFkdmFuY2VPbk9wdGlvbnMgJiYgc3RlcC5hZHZhbmNlT25PcHRpb25zLmFsbG93R29CYWNrXG4gICAgICAgICAgICA/IFtiYWNrQnV0dG9uLCB2b2lkQnV0dG9uXVxuICAgICAgICAgICAgOiBbdm9pZEJ1dHRvbl07XG4gICAgICB9XG4gICAgICAvLyBhZGRzIGEgZGVmYXVsdCBiZWZvcmVTaG93UHJvbWlzZSBmdW5jdGlvblxuICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzU2V0dXA6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWR2YW5jZU9uICYmICFzdGVwLmFkdmFuY2VPbikge1xuICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWR2YW5jZU9uKSkge1xuICAgICAgICAgICAgICAgIGFkdmFuY2VPbiA9IFthZHZhbmNlT25dO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZUFyciQ6IFN1YmplY3Q8dm9pZD5bXSA9IFtdO1xuICAgICAgICAgICAgICBhZHZhbmNlT24uZm9yRWFjaCgoXzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZUV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAgICAgICAgICAgYWR2YW5jZUFyciQucHVzaChhZHZhbmNlRXZlbnQkKTtcblxuICAgICAgICAgICAgICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICAgICAgICAgICAgICB0aGlzLl9iaW5kRXZlbnQoXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgc3RlcC5hZHZhbmNlT25PcHRpb25zLFxuICAgICAgICAgICAgICAgICAgYWR2YW5jZUV2ZW50JCxcbiAgICAgICAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCBhZHZhbmNlU3ViczogU3Vic2NyaXB0aW9uID0gZm9ya0pvaW4oLi4uYWR2YW5jZUFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCwgYmFja0V2ZW50JCkpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBhZHZhbmNlIHRvIGEgc3BlY2lmaWMgc3RlcCwgZWxzZSBhZHZhbmNlIHRvIG5leHQgc3RlcFxuICAgICAgICAgICAgICAgICAgaWYgKHN0ZXAuYWR2YW5jZU9uT3B0aW9ucyAmJiBzdGVwLmFkdmFuY2VPbk9wdGlvbnMuanVtcFRvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLnNob3coc3RlcC5hZHZhbmNlT25PcHRpb25zLmp1bXBUbyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBmb3J3YXJkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCBvbiB0aGUgc3RlcCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICAgICAgICAgIGlmIChzdGVwLmFib3J0T24pIHtcbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRBcnIkOiBTdWJqZWN0PHZvaWQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgc3RlcC5hYm9ydE9uLmZvckVhY2goKGFib3J0T246IElUb3VyRXZlbnRPbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICAgICAgICBhYm9ydEFyciQucHVzaChhYm9ydEV2ZW50JCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmluZEV2ZW50KFxuICAgICAgICAgICAgICAgICAgYWJvcnRPbixcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGFib3J0RXZlbnQkLFxuICAgICAgICAgICAgICAgICAgZGVzdHJveWVkRXZlbnQkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRTdWJzOiBTdWJzY3JpcHRpb24gPSBtZXJnZSguLi5hYm9ydEFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZGVzdHJveWVkRXZlbnQkLCBiYWNrRXZlbnQkLCBmb3J3YXJkRXZlbnQkKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IF9zdG9wVGltZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICBjb25zdCBfcmV0cmllc1JlYWNoZWQkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgICAgICAgY29uc3QgX3JldHJ5QXR0ZW1wdHMkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9XG4gICAgICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuXG4gICAgICAgICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgLy8gY2hlY2tzIGlmIFwiYXR0YWNoVG9cIiBpcyBhIHN0cmluZyBvciBhbiBvYmplY3QgdG8gZ2V0IHRoZSBpZCBvZiBhbiBlbGVtZW50XG4gICAgICAgICAgaWYgKHR5cGVvZiBzdGVwLmF0dGFjaFRvID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWQgPSBzdGVwLmF0dGFjaFRvO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0eXBlb2Ygc3RlcC5hdHRhY2hUbyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzdGVwLmF0dGFjaFRvLmVsZW1lbnQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZCA9IHN0ZXAuYXR0YWNoVG8uZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiBpZCBhcyBhIHN0cmluZyBpbiBlaXRoZXIgY2FzZSwgd2UgdXNlIGl0ICh3ZSBpZ25vcmUgaXQgaWYgaXRzIEhUTUxFbGVtZW50KVxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBzdGVwIGlzIHRoZSBmaXJzdCBzdGVwIG9mIHRoZSB0b3VyLCB3ZSBzZXQgdGhlIGJ1dHRvbnMgdG8gYmUgb25seSBcIm5leHRcIlxuICAgICAgICAgICAgLy8gd2UgaGFkIHRvIHVzZSBgYW55YCBzaW5jZSB0aGUgdG91ciBkb2VzbnQgZXhwb3NlIHRoZSBzdGVwcyBpbiBhbnkgZmFzaGlvbiBub3IgYSB3YXkgdG8gY2hlY2sgaWYgd2UgaGF2ZSBtb2RpZmllZCB0aGVtIGF0IGFsbFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpID09PVxuICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHNbMF1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpPy51cGRhdGVTdGVwT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgYnV0dG9uczogb3JpZ2luYWxTdGVwc1tpbmRleF0uYWR2YW5jZU9uXG4gICAgICAgICAgICAgICAgICA/IFt2b2lkQnV0dG9uXVxuICAgICAgICAgICAgICAgICAgOiBbbmV4dEJ1dHRvbl0sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdG8gdGhlIGF0dGVtcHRzIG9ic2VydmFibGUgdG8gbm90aWZ5IGRlZXZlbG9wZXIgd2hlbiBudW1iZXIgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgc2tpcFdoaWxlKCh2YWw6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucy5yZXRyaWVzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsIDwgc3RlcC5hdHRhY2hUb09wdGlvbnMucmV0cmllcztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwgPCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfQVRURU1QVFM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKF9zdG9wVGltZXIkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGF0dGVtcHRzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBfcmV0cmllc1JlYWNoZWQkLm5leHQoMSk7XG4gICAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIC8vIGlmIGF0dGVtcHRzIGhhdmUgYmVlbiByZWFjaGVkLCB3ZSBjaGVjayBcInNraXBJZk5vdEZvdW5kXCIgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnNraXBJZk5vdEZvdW5kXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBnZXQgdG8gdGhpcyBzdGVwIGNvbWluZyBiYWNrIGZyb20gYSBzdGVwIGFuZCBpdCB3YXNudCBmb3VuZFxuICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBlaXRoZXIgY2hlY2sgaWYgaXRzIHRoZSBmaXJzdCBzdGVwIGFuZCB0cnkgZ29pbmcgZm9yd2FyZFxuICAgICAgICAgICAgICAgICAgLy8gb3Igd2Uga2VlcCBnb2luZyBiYWNrIHVudGlsIHdlIGZpbmQgYSBzdGVwIHRoYXQgYWN0dWFsbHkgZXhpc3RzXG4gICAgICAgICAgICAgICAgICBpZiAoX2JhY2tGbG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHMuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmdldEN1cnJlbnRTdGVwKClcbiAgICAgICAgICAgICAgICAgICAgICApID09PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5iYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2JhY2tGbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZXN0cm95cyBjdXJyZW50IHN0ZXAgaWYgd2UgbmVlZCB0byBza2lwIGl0IHRvIHJlbW92ZSBpdCBmcm9tIHRoZSB0b3VyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5zaGVwaGVyZFRvdXIuZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5yZW1vdmVTdGVwKGN1cnJlbnRTdGVwPy5pZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJiBzdGVwLmF0dGFjaFRvT3B0aW9ucy5lbHNlKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiBcInNraXBJZk5vdEZvdW5kXCIgaXMgbm90IHRydWUsIHRoZW4gd2UgY2hlY2sgaWYgXCJlbHNlXCIgaGFzIGJlZW4gc2V0IHRvIGp1bXAgdG8gYSBzcGVjaWZpYyBzdGVwXG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5zaG93KHN0ZXAuYXR0YWNoVG9PcHRpb25zLmVsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBgUmV0cmllcyByZWFjaGVkIHRyeWluZyB0byBmaW5kICR7aWR9LiBSZXRyaWVkICAke2F0dGVtcHRzfSB0aW1lcy5gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gZWxzZSB3ZSBzaG93IHRoZSBzdGVwIHJlZ2FyZGxlc3NcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyB3ZSBzdGFydCBhIHRpbWVyIG9mIGF0dGVtcHRzIHRvIGZpbmQgYW4gZWxlbWVudCBpbiB0aGUgZG9tXG4gICAgICAgICAgICB0aW1lcihcbiAgICAgICAgICAgICAgKHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICAgICAgICAgIFNIRVBIRVJEX0RFRkFVTFRfRklORF9USU1FX0JFRk9SRV9TSE9XLFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuaW50ZXJ2YWwpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIHRoZSB0aW1lciB3aWxsIGNvbnRpbnVlIGVpdGhlciB1bnRpbCB3ZSBmaW5kIHRoZSBlbGVtZW50IG9yIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZShfc3RvcFRpbWVyJCwgX3JldHJpZXNSZWFjaGVkJCwgZGVzdHJveWVkRXZlbnQkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQsIHdlIHN0b3AgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzU2V0dXAoKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkLm5leHQoX3JldHJ5QXR0ZW1wdHMkLnZhbHVlICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gc3RvcCBmaW5kIGludGVydmFsIGlmIHVzZXIgc3RvcHMgdGhlIHRvdXJcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBfc3RvcFRpbWVyJC5uZXh0KCk7XG4gICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIF9yZXRyaWVzUmVhY2hlZCQubmV4dCgxKTtcbiAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJlc29sdmUgb2JzZXJ2YWJsZSB1bnRpbCB0aGUgdGltZUJlZm9yZVNob3cgaGFzIHBhc3NzZWQgb3IgdXNlIGRlZmF1bHRcbiAgICAgICAgICAgIHRpbWVyKFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMudGltZUJlZm9yZVNob3cpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX1RJTUVfQkVGT1JFX1NIT1dcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCkpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIHByaXZhdGUgX2JpbmRFdmVudChcbiAgICBldmVudE9uOiBJVG91ckV2ZW50T24sXG4gICAgZXZlbnRPbk9wdGlvbnM6IElUb3VyRXZlbnRPbk9wdGlvbnMgfCB1bmRlZmluZWQsXG4gICAgZXZlbnQkOiBTdWJqZWN0PHZvaWQ+LFxuICAgIGRlc3Ryb3llZEV2ZW50JDogU3ViamVjdDx2b2lkPlxuICApOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGV2ZW50T24uc2VsZWN0b3IgPz8gJyc7XG4gICAgY29uc3QgZXZlbnQgPSBldmVudE9uLmV2ZW50O1xuICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICBjb25zdCB0aW1lclN1YnM6IFN1YnNjcmlwdGlvbiA9IHRpbWVyKFxuICAgICAgKGV2ZW50T25PcHRpb25zICYmIGV2ZW50T25PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyxcbiAgICAgIChldmVudE9uT3B0aW9ucyAmJiBldmVudE9uT3B0aW9ucy5pbnRlcnZhbCkgfHxcbiAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCBoYXMgYmVlbiBmb3VuZCwgd2Ugc3RvcCB0aGUgdGltZXIgYW5kIHJlc29sdmUgdGhlIHByb21pc2VcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICB0aW1lclN1YnMudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIGlmIChldmVudCA9PT0gSVRvdXJFdmVudC5hZGRlZCkge1xuICAgICAgICAgICAgLy8gaWYgZXZlbnQgaXMgXCJBZGRlZFwiIHRyaWdnZXIgYSBzb29uIGFzIHRoaXMgaXMgYXR0YWNoZWQuXG4gICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGV2ZW50ID09PSBJVG91ckV2ZW50LmNsaWNrIHx8XG4gICAgICAgICAgICBldmVudCA9PT0gSVRvdXJFdmVudC5wb2ludGVyb3ZlciB8fFxuICAgICAgICAgICAgKGV2ZW50ICYmIGV2ZW50LmluZGV4T2YoSVRvdXJFdmVudC5rZXl1cCkgPiAtMSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIHdlIHVzZSBub3JtYWwgbGlzdGVuZXJzIGZvciBtb3VzZWV2ZW50c1xuICAgICAgICAgICAgY29uc3QgbWFpbkV2ZW50ID0gZXZlbnQ/LnNwbGl0KCcuJylbMF07XG4gICAgICAgICAgICBjb25zdCBzdWJFdmVudCA9IGV2ZW50Py5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQsIG1haW5FdmVudClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBvbmx5IHRyaWdnZXIgaWYgdGhlIGV2ZW50IGlzIGEga2V5Ym9hcmQgZXZlbnQgYW5kIHBhcnQgb2Ygb3V0IGxpc3RcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlFdmVudHMuZ2V0KCRldmVudC5rZXlDb2RlKSA9PT0gc3ViRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZXZlbnQkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09IElUb3VyRXZlbnQucmVtb3ZlZCkge1xuICAgICAgICAgICAgLy8gYW5kIHdlIHdpbGwgdXNlIE11dGF0aW9uT2JzZXJ2ZXIgZm9yIERPTSBldmVudHNcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIHN0b3AgbGlzdGVuaW5pbmcgaWYgdG91ciBpcyBjbG9zZWRcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIG9ic2VydmUgZm9yIGFueSBET00gaW50ZXJhY3Rpb24gaW4gdGhlIGVsZW1lbnRcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Router, ActivatedRoute, NavigationStart, } from '@angular/router';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { CovalentGuidedTour, } from './guided.tour';\nimport * as i0 from \"@angular/core\";\n/**\n * Router enabled Shepherd tour\n */\nexport var TourEvents;\n(function (TourEvents) {\n TourEvents[\"complete\"] = \"complete\";\n TourEvents[\"cancel\"] = \"cancel\";\n TourEvents[\"hide\"] = \"hide\";\n TourEvents[\"show\"] = \"show\";\n TourEvents[\"start\"] = \"start\";\n TourEvents[\"active\"] = \"active\";\n TourEvents[\"inactive\"] = \"inactive\";\n})(TourEvents || (TourEvents = {}));\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n _router = inject(Router);\n _route = inject(ActivatedRoute);\n _httpClient = inject(HttpClient);\n _toursMap = new Map();\n _tourStepURLs = new Map();\n constructor() {\n super();\n const _router = this._router;\n _router.events\n .pipe(filter((event) => event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'))\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n tourEvent$(str) {\n return fromEvent(this.shepherdTour, str);\n }\n async registerTour(tourName, tour) {\n const guidedTour = typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n startTour(tourName) {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance = this.shepherdTour.addSteps(this._configureRoutesForSteps(this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)));\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe((tourEvent) => {\n const currentURL = this._router.url.split(/[?#]/)[0];\n const { step: { id, options }, } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n }\n else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n }\n else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n });\n this.start();\n return tourInstance;\n }\n else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam = 'tour') {\n return this._route.queryParamMap.pipe(debounceTime(100), tap((params) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams = new URLSearchParams(window.location.search);\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url = window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n }));\n }\n setNextBtnDisability(stepId, isDisabled) {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions = this.shepherdTour.getById(stepId)\n .options;\n stepOptions.buttons?.forEach((button) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n async _loadTour(tourUrl) {\n const request = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(map((resultSet) => {\n return JSON.parse(JSON.stringify(resultSet));\n }))\n .toPromise();\n }\n catch {\n return undefined;\n }\n }\n _getTour(key) {\n return this._toursMap.get(key);\n }\n _configureRoutesForSteps(routedSteps) {\n routedSteps.forEach((step) => {\n if (step.routing) {\n const route = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n }\n else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n return routedSteps;\n }\n static ɵfac = function CovalentGuidedTourService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentGuidedTourService)(); };\n static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CovalentGuidedTourService, factory: CovalentGuidedTourService.ɵfac });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CovalentGuidedTourService, [{\n type: Injectable\n }], () => [], null); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1ndWlkZWQtdG91ci9zcmMvbGliL2d1aWRlZC10b3VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUdkLGVBQWUsR0FFaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsa0JBQWtCLEdBSW5CLE1BQU0sZUFBZSxDQUFDOztBQWN2Qjs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFVBUVg7QUFSRCxXQUFZLFVBQVU7SUFDcEIsbUNBQXFCLENBQUE7SUFDckIsK0JBQWlCLENBQUE7SUFDakIsMkJBQWEsQ0FBQTtJQUNiLDJCQUFhLENBQUE7SUFDYiw2QkFBZSxDQUFBO0lBQ2YsK0JBQWlCLENBQUE7SUFDakIsbUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVJXLFVBQVUsS0FBVixVQUFVLFFBUXJCO0FBU0QsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGtCQUFrQjtJQUN2RCxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqQyxTQUFTLEdBQTZCLElBQUksR0FBRyxFQUF1QixDQUFDO0lBQ3JFLGFBQWEsR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDdkU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFN0IsT0FBTyxDQUFDLE1BQU07YUFDWCxJQUFJLENBQ0gsTUFBTSxDQUNKLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQ3pCLEtBQUssWUFBWSxlQUFlO1lBQ2hDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLENBQ3pDLENBQ0Y7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFlO1FBQ3hCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQ2hCLFFBQWdCLEVBQ2hCLElBQTBCO1FBRTFCLE1BQU0sVUFBVSxHQUNkLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUQsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRSxNQUFNLFlBQVksR0FBa0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQzVELElBQUksQ0FBQyx3QkFBd0IsQ0FDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNqRSxDQUNGLENBQUM7WUFDRiw0RUFBNEU7WUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUN4QyxDQUFDLFNBQTJCLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxVQUFVLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLEVBQ0osSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUN0QixHQUFHLFNBQVMsQ0FBQztnQkFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwRCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUN6QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxRQUFRLDJDQUEyQyxDQUFDLENBQUM7WUFDMUUsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsa0RBQWtEO0lBQ2xELHVCQUF1QixDQUFDLFVBQVUsR0FBRyxNQUFNO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxDQUFDLE1BQWdCLEVBQUUsRUFBRTtZQUN2QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDMUIsZ0NBQWdDO2dCQUNoQyxNQUFNLFlBQVksR0FBb0IsSUFBSSxlQUFlLENBQ3ZELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUN2QixDQUFDO2dCQUNGLHlCQUF5QjtnQkFDekIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDaEMsa0NBQWtDO2dCQUNsQyxJQUFJLEdBQUcsR0FDTCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVE7b0JBQ3hCLElBQUk7b0JBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO29CQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztvQkFDNUIsR0FBRyxJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZDLENBQUM7Z0JBQ0QsMkRBQTJEO2dCQUMzRCxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYyxFQUFFLFVBQW1CO1FBQ3RELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFdBQVcsR0FBZSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQVM7aUJBQ3RFLE9BQU8sQ0FBQztZQUNYLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBc0IsRUFBRSxFQUFFO2dCQUN0RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBZTtRQUNyQyxNQUFNLE9BQU8sR0FBdUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLE9BQU87aUJBQ2pCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FDSDtpQkFDQSxTQUFTLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyxRQUFRLENBQUMsR0FBVztRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTyx3QkFBd0IsQ0FDOUIsV0FBOEI7UUFFOUIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQXFCLEVBQUUsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3pDLG9GQUFvRjtnQkFDcEYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxpQkFBaUIsR0FBd0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDO29CQUN0RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFO3dCQUM1QixPQUFPLElBQUksQ0FBQyxPQUFPOzZCQUNoQixRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQzs2QkFDdkMsSUFBSSxDQUFDLEdBQUcsRUFBRTs0QkFDVCxPQUFPLGlCQUFpQixFQUFFLENBQUM7d0JBQzdCLENBQUMsQ0FBQyxDQUFDO29CQUNQLENBQUMsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7bUhBdEtVLHlCQUF5QjtnRUFBekIseUJBQXlCLFdBQXpCLHlCQUF5Qjs7aUZBQXpCLHlCQUF5QjtjQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgUGFyYW1NYXAsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgRXZlbnQgYXMgTmF2aWdhdGlvbkV2ZW50LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IFNoZXBoZXJkIGZyb20gJ3NoZXBoZXJkLmpzJztcbmltcG9ydCB7IHRhcCwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvdmFsZW50R3VpZGVkVG91cixcbiAgSVRvdXJTdGVwLFxuICBJVG91ck9wdGlvbnMsXG4gIFRvdXJTdGVwQnV0dG9uLFxufSBmcm9tICcuL2d1aWRlZC50b3VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91ciBleHRlbmRzIElUb3VyT3B0aW9ucyB7XG4gIHN0ZXBzOiBJR3VpZGVkVG91clN0ZXBbXTtcbiAgZmluaXNoQnV0dG9uVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91clN0ZXAgZXh0ZW5kcyBJVG91clN0ZXAge1xuICByb3V0aW5nPzoge1xuICAgIHJvdXRlOiBzdHJpbmc7XG4gICAgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcztcbiAgfTtcbn1cblxuLyoqXG4gKiAgUm91dGVyIGVuYWJsZWQgU2hlcGhlcmQgdG91clxuICovXG5leHBvcnQgZW51bSBUb3VyRXZlbnRzIHtcbiAgY29tcGxldGUgPSAnY29tcGxldGUnLFxuICBjYW5jZWwgPSAnY2FuY2VsJyxcbiAgaGlkZSA9ICdoaWRlJyxcbiAgc2hvdyA9ICdzaG93JyxcbiAgc3RhcnQgPSAnc3RhcnQnLFxuICBhY3RpdmUgPSAnYWN0aXZlJyxcbiAgaW5hY3RpdmUgPSAnaW5hY3RpdmUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHdWlkZWRUb3VyRXZlbnQge1xuICBzdGVwOiBhbnk7XG4gIHByZXZpb3VzOiBhbnk7XG4gIHRvdXI6IGFueTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91clNlcnZpY2UgZXh0ZW5kcyBDb3ZhbGVudEd1aWRlZFRvdXIge1xuICBwcml2YXRlIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9odHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIHByaXZhdGUgX3RvdXJzTWFwOiBNYXA8c3RyaW5nLCBJR3VpZGVkVG91cj4gPSBuZXcgTWFwPHN0cmluZywgSUd1aWRlZFRvdXI+KCk7XG4gIHByaXZhdGUgX3RvdXJTdGVwVVJMczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgX3JvdXRlciA9IHRoaXMuX3JvdXRlcjtcblxuICAgIF9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogTmF2aWdhdGlvbkV2ZW50KSA9PlxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgJiZcbiAgICAgICAgICAgIGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgdG91ckV2ZW50JChzdHI6IFRvdXJFdmVudHMpOiBPYnNlcnZhYmxlPElHdWlkZWRUb3VyRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCBzdHIpO1xuICB9XG5cbiAgYXN5bmMgcmVnaXN0ZXJUb3VyKFxuICAgIHRvdXJOYW1lOiBzdHJpbmcsXG4gICAgdG91cjogSUd1aWRlZFRvdXIgfCBzdHJpbmcsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGd1aWRlZFRvdXI6IElHdWlkZWRUb3VyID1cbiAgICAgIHR5cGVvZiB0b3VyID09PSAnc3RyaW5nJyA/IGF3YWl0IHRoaXMuX2xvYWRUb3VyKHRvdXIpIDogdG91cjtcbiAgICB0aGlzLl90b3Vyc01hcC5zZXQodG91ck5hbWUsIGd1aWRlZFRvdXIpO1xuICB9XG5cbiAgc3RhcnRUb3VyKHRvdXJOYW1lOiBzdHJpbmcpOiBTaGVwaGVyZC5Ub3VyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZWRUb3VyID0gdGhpcy5fZ2V0VG91cih0b3VyTmFtZSk7XG4gICAgdGhpcy5maW5pc2goKTtcbiAgICBpZiAoZ3VpZGVkVG91ciAmJiBndWlkZWRUb3VyLnN0ZXBzICYmIGd1aWRlZFRvdXIuc3RlcHMubGVuZ3RoKSB7XG4gICAgICAvLyByZW1vdmUgc3RlcHMgZnJvbSB0b3VyIHNpbmNlIHdlIG5lZWQgdG8gcHJlcHJvY2VzcyB0aGVtIGZpcnN0XG4gICAgICB0aGlzLm5ld1RvdXIoT2JqZWN0LmFzc2lnbih7fSwgZ3VpZGVkVG91ciwgeyBzdGVwczogdW5kZWZpbmVkIH0pKTtcbiAgICAgIGNvbnN0IHRvdXJJbnN0YW5jZTogU2hlcGhlcmQuVG91ciA9IHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKFxuICAgICAgICB0aGlzLl9jb25maWd1cmVSb3V0ZXNGb3JTdGVwcyhcbiAgICAgICAgICB0aGlzLl9wcmVwYXJlVG91cihndWlkZWRUb3VyLnN0ZXBzLCBndWlkZWRUb3VyLmZpbmlzaEJ1dHRvblRleHQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIC8vIGluaXQgcm91dGUgdHJhbnNpdGlvbiBpZiBzdGVwIFVSTCBpcyBkaWZmZXJlbnQgdGhlbiB0aGUgY3VycmVudCBsb2NhdGlvbi5cbiAgICAgIHRoaXMudG91ckV2ZW50JChUb3VyRXZlbnRzLnNob3cpLnN1YnNjcmliZShcbiAgICAgICAgKHRvdXJFdmVudDogSUd1aWRlZFRvdXJFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRVUkw6IHN0cmluZyA9IHRoaXMuX3JvdXRlci51cmwuc3BsaXQoL1s/I10vKVswXTtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBzdGVwOiB7IGlkLCBvcHRpb25zIH0sXG4gICAgICAgICAgfSA9IHRvdXJFdmVudDtcbiAgICAgICAgICBpZiAodGhpcy5fdG91clN0ZXBVUkxzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBSb3V0ZSA9IHRoaXMuX3RvdXJTdGVwVVJMcy5nZXQoaWQpO1xuICAgICAgICAgICAgaWYgKHN0ZXBSb3V0ZSAhPT0gY3VycmVudFVSTCkge1xuICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3N0ZXBSb3V0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJvdXRpbmcpIHtcbiAgICAgICAgICAgICAgdGhpcy5fdG91clN0ZXBVUkxzLnNldChpZCwgb3B0aW9ucy5yb3V0aW5nLnJvdXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX3RvdXJTdGVwVVJMcy5zZXQoaWQsIGN1cnJlbnRVUkwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICByZXR1cm4gdG91ckluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGBUb3VyICR7dG91ck5hbWV9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgdHJ5IGFub3RoZXIgdG91ci5gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRmluZHMgdGhlIHJpZ2h0IHJlZ2lzdGVyZWQgdG91ciBieSB1c2luZyBxdWVyeVBhcmFtc1xuICAvLyBmaW5pc2hlcyBhbnkgb3RoZXIgdG91ciBhbmQgc3RhcnRzIHRoZSBuZXcgb25lLlxuICBpbml0aWFsaXplT25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtID0gJ3RvdXInKTogT2JzZXJ2YWJsZTxQYXJhbU1hcD4ge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIHRhcCgocGFyYW1zOiBQYXJhbU1hcCkgPT4ge1xuICAgICAgICBjb25zdCB0b3VyUGFyYW0gPSBwYXJhbXMuZ2V0KHF1ZXJ5UGFyYW0pO1xuICAgICAgICBpZiAodG91clBhcmFtKSB7XG4gICAgICAgICAgdGhpcy5zdGFydFRvdXIodG91clBhcmFtKTtcbiAgICAgICAgICAvLyBnZXQgY3VycmVudCBzZWFyY2ggcGFyYW1ldGVyc1xuICAgICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBkZWxldGUgdG91ciBxdWVyeVBhcmFtXG4gICAgICAgICAgc2VhcmNoUGFyYW1zLmRlbGV0ZShxdWVyeVBhcmFtKTtcbiAgICAgICAgICAvLyBidWlsZCBuZXcgVVJMIHN0cmluZyB3aXRob3V0IGl0XG4gICAgICAgICAgbGV0IHVybDogc3RyaW5nID1cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArXG4gICAgICAgICAgICAnLy8nICtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICBpZiAoc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIHVybCArPSAnPycgKyBzZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcmVwbGFjZSBzdGF0ZSBpbiBoaXN0b3J5IHdpdGhvdXQgdHJpZ2dlcmluZyBhIG5hdmlnYXRpb25cbiAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBwYXRoOiB1cmwgfSwgJycsIHVybCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBzZXROZXh0QnRuRGlzYWJpbGl0eShzdGVwSWQ6IHN0cmluZywgaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCkpIHtcbiAgICAgIGNvbnN0IHN0ZXBPcHRpb25zOiBJVG91clN0ZXAgPSAodGhpcy5zaGVwaGVyZFRvdXIuZ2V0QnlJZChzdGVwSWQpIGFzIGFueSlcbiAgICAgICAgLm9wdGlvbnM7XG4gICAgICBzdGVwT3B0aW9ucy5idXR0b25zPy5mb3JFYWNoKChidXR0b246IFRvdXJTdGVwQnV0dG9uKSA9PiB7XG4gICAgICAgIGlmIChidXR0b24udGV4dCA9PT0gJ2NoZXZyb25fcmlnaHQnKSB7XG4gICAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCk/LnVwZGF0ZVN0ZXBPcHRpb25zKHN0ZXBPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9sb2FkVG91cih0b3VyVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuX2h0dHBDbGllbnQuZ2V0KHRvdXJVcmwpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxdWVzdFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdFNldDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHRTZXQpKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFRvdXIoa2V5OiBzdHJpbmcpOiBJR3VpZGVkVG91ciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdXJzTWFwLmdldChrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlUm91dGVzRm9yU3RlcHMoXG4gICAgcm91dGVkU3RlcHM6IElHdWlkZWRUb3VyU3RlcFtdLFxuICApOiBJR3VpZGVkVG91clN0ZXBbXSB7XG4gICAgcm91dGVkU3RlcHMuZm9yRWFjaCgoc3RlcDogSUd1aWRlZFRvdXJTdGVwKSA9PiB7XG4gICAgICBpZiAoc3RlcC5yb3V0aW5nKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBzdGVwLnJvdXRpbmcucm91dGU7XG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgYmVmb3JlU2hvd1Byb21pc2UsIHRoZW4gd2Ugc2F2ZSBpdCBhbmQgY2FsbCBpdCBhZnRlciB0aGUgbmF2aWdhdGlvblxuICAgICAgICBpZiAoc3RlcC5iZWZvcmVTaG93UHJvbWlzZSkge1xuICAgICAgICAgIGNvbnN0IGJlZm9yZVNob3dQcm9taXNlOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gc3RlcC5iZWZvcmVTaG93UHJvbWlzZTtcbiAgICAgICAgICBzdGVwLmJlZm9yZVNob3dQcm9taXNlID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlclxuICAgICAgICAgICAgICAubmF2aWdhdGUoW3JvdXRlXSwgc3RlcC5yb3V0aW5nPy5leHRyYXMpXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmVmb3JlU2hvd1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGVwLmJlZm9yZVNob3dQcm9taXNlID0gKCkgPT4gdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm91dGVkU3RlcHM7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\nimport * as i0 from \"@angular/core\";\nexport class CovalentGuidedTourModule {\n static ɵfac = function CovalentGuidedTourModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentGuidedTourModule)(); };\n static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CovalentGuidedTourModule });\n static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [CovalentGuidedTourService], imports: [CommonModule] });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CovalentGuidedTourModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && i0.ɵɵsetNgModuleScope(CovalentGuidedTourModule, { imports: [CommonModule] }); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVFsRSxNQUFNLE9BQU8sd0JBQXdCO2tIQUF4Qix3QkFBd0I7NERBQXhCLHdCQUF3QjtpRUFKeEIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUQ1QixZQUFZOztpRkFLWCx3QkFBd0I7Y0FOcEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3RDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixPQUFPLEVBQUUsRUFBRTthQUNaOzt3RkFDWSx3QkFBd0IsY0FMekIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ292YWxlbnRHdWlkZWRUb3VyU2VydmljZSB9IGZyb20gJy4vZ3VpZGVkLXRvdXIuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtDb3ZhbGVudEd1aWRlZFRvdXJTZXJ2aWNlXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91ck1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292YWxlbnQtZ3VpZGVkLXRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2NvdmFsZW50LWd1aWRlZC10b3VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"covalent-guided-tour.mjs","sources":["../tmp-esm2022/lib/guided.tour.js","../tmp-esm2022/lib/guided-tour.service.js","../tmp-esm2022/lib/guided-tour.module.js","../tmp-esm2022/covalent-guided-tour.js"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport { timer, Subject, BehaviorSubject, merge, fromEvent, forkJoin, } from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\nexport var ITourEvent;\n(function (ITourEvent) {\n ITourEvent[\"click\"] = \"click\";\n ITourEvent[\"pointerover\"] = \"pointerover\";\n ITourEvent[\"keyup\"] = \"keyup\";\n ITourEvent[\"added\"] = \"added\";\n ITourEvent[\"removed\"] = \"removed\";\n})(ITourEvent || (ITourEvent = {}));\nclass TourButtonsActions {\n}\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\nconst overriddenEvents = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\nconst keyEvents = new Map([\n [13, 'enter'],\n [27, 'esc'],\n]);\nconst defaultStepOptions = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\nconst MAT_ICON_BUTTON = 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';\nconst MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\nexport class CovalentGuidedTour extends TourButtonsActions {\n _destroyedEvent$;\n shepherdTour;\n stepOptions;\n constructor(stepOptions = defaultStepOptions) {\n super();\n this.stepOptions = stepOptions;\n this.newTour();\n }\n newTour(opts) {\n this.shepherdTour = new Shepherd.Tour(Object.assign({\n defaultStepOptions: this.stepOptions,\n }, opts));\n this._destroyedEvent$ = new Subject();\n // listen to cancel and complete to clean up abortOn events\n merge(fromEvent(this.shepherdTour, 'cancel'), fromEvent(this.shepherdTour, 'complete'))\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$ = [];\n opts.abortOn.forEach((abortOn) => {\n const abortEvent$ = new Subject();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n const abortSubs = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n back() {\n this.shepherdTour.back();\n }\n cancel() {\n this.shepherdTour.cancel();\n }\n next() {\n this.shepherdTour.next();\n }\n finish() {\n this.shepherdTour.complete();\n }\n addSteps(steps) {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n start() {\n this.shepherdTour.start();\n }\n _prepareTour(originalSteps, finishLabel = 'finish') {\n // create Subjects for back and forward events\n const backEvent$ = new Subject();\n const forwardEvent$ = new Subject();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$ = new Subject();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function () {\n // get all the footers that are available in the DOM\n const footers = Array.from(document.querySelectorAll('.shepherd-footer'));\n // get the last footer since Shepherd always puts the active one at the end\n const footer = footers[footers.length - 1];\n // generate steps html element\n const progress = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n let stepTotal = 0;\n const steps = originalSteps.map((step) => {\n let showProgress = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function () {\n return;\n };\n }\n else if (step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n const finishButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n const voidButton = {\n text: '',\n action() {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n const totalSteps = steps.length;\n steps.forEach((step, index) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n }\n else {\n this.shepherdTour.back();\n }\n },\n classes: step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n }\n else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n }\n else {\n step.buttons = [backButton, nextButton];\n }\n }\n // checks \"advanceOn\" to override listeners\n let advanceOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if ((typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve) => {\n const additionalCapabilitiesSetup = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n const advanceArr$ = [];\n advanceOn.forEach((_) => {\n const advanceEvent$ = new Subject();\n advanceArr$.push(advanceEvent$);\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(_, step.advanceOnOptions, advanceEvent$, destroyedEvent$);\n });\n const advanceSubs = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n }\n else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$ = [];\n step.abortOn.forEach((abortOn) => {\n const abortEvent$ = new Subject();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, destroyedEvent$);\n });\n const abortSubs = merge(...abortArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$)))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n const _stopTimer$ = new Subject();\n const _retriesReached$ = new Subject();\n const _retryAttempts$ = new BehaviorSubject(-1);\n let id;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n }\n else if (typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string') {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (this.shepherdTour.getCurrentStep() ===\n this.shepherdTour.steps[0]) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(skip(1), skipWhile((val) => {\n if (step.attachToOptions &&\n step.attachToOptions.retries !== undefined) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }), takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$)))\n .subscribe((attempts) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (step.attachToOptions &&\n step.attachToOptions.skipIfNotFound) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (this.shepherdTour.steps.indexOf(this.shepherdTour.getCurrentStep()) === 0) {\n this.shepherdTour.next();\n }\n else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n }\n else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n }\n else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n }\n else {\n // tslint:disable-next-line:no-console\n console.warn(`Retries reached trying to find ${id}. Retried ${attempts} times.`);\n // else we show the step regardless\n resolve();\n }\n });\n // we start a timer of attempts to find an element in the dom\n timer((step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW, (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL)\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$)))\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n }\n else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n }\n else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer((step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW)\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n _bindEvent(eventOn, eventOnOptions, event$, destroyedEvent$) {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs = timer((eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW, (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL)\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n }\n else if (event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(filter(($event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n }\n else {\n return true;\n }\n }), takeUntil(merge(event$.asObservable(), destroyedEvent$)))\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n }\n else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLnRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2xpYi9ndWlkZWQudG91ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxHQUNULE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszRSxNQUFNLENBQU4sSUFBWSxVQU1YO0FBTkQsV0FBWSxVQUFVO0lBQ3BCLDZCQUFpQixDQUFBO0lBQ2pCLHlDQUE2QixDQUFBO0lBQzdCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLGlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQXNDRCxNQUFlLGtCQUFrQjtDQVFoQztBQUVELE1BQU0sc0NBQXNDLEdBQUcsR0FBRyxDQUFDO0FBQ25ELE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBRTFDLE1BQU0sZ0JBQWdCLEdBQWE7SUFDakMsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLFdBQVc7SUFDdEIsVUFBVSxDQUFDLE9BQU87SUFDbEIsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLEtBQUs7Q0FDakIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUF3QixJQUFJLEdBQUcsQ0FBaUI7SUFDN0QsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO0NBQ1osQ0FBQyxDQUFDO0FB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Q0FBQyxDQUFDLENBQUM7b0JBQ0gsaURBQWlEO29CQUNqRCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsT0FBTyxFQUFFLElBQUk7d0JBQ2IsVUFBVSxFQUFFLElBQUk7cUJBQ2pCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoZXBoZXJkIGZyb20gJ3NoZXBoZXJkLmpzJztcbmltcG9ydCB7XG4gIHRpbWVyLFxuICBTdWJqZWN0LFxuICBCZWhhdmlvclN1YmplY3QsXG4gIG1lcmdlLFxuICBTdWJzY3JpcHRpb24sXG4gIGZyb21FdmVudCxcbiAgZm9ya0pvaW4sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwV2hpbGUsIGZpbHRlciwgc2tpcCwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIFRvdXJTdGVwID0gU2hlcGhlcmQuU3RlcC5TdGVwT3B0aW9ucztcbmV4cG9ydCB0eXBlIFRvdXJTdGVwQnV0dG9uID0gU2hlcGhlcmQuU3RlcC5TdGVwT3B0aW9uc0J1dHRvbjtcblxuZXhwb3J0IGVudW0gSVRvdXJFdmVudCB7XG4gICdjbGljaycgPSAnY2xpY2snLFxuICAncG9pbnRlcm92ZXInID0gJ3BvaW50ZXJvdmVyJyxcbiAgJ2tleXVwJyA9ICdrZXl1cCcsXG4gICdhZGRlZCcgPSAnYWRkZWQnLCAvLyBhZGRlZCB0byBET01cbiAgJ3JlbW92ZWQnID0gJ3JlbW92ZWQnLCAvLyByZW1vdmVkIGZyb20gRE9NXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJFdmVudE9uIHtcbiAgc2VsZWN0b3I/OiBzdHJpbmc7IC8vIGNzcyBzZWxlY3RvclxuICBldmVudD86IGtleW9mIHR5cGVvZiBJVG91ckV2ZW50OyAvLyBjbGljaywgcG9pbnRlcm92ZXIsIGtleXVwLCBhZGRlZCwgcmVtb3ZlZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyRXZlbnRPbk9wdGlvbnMge1xuICB0aW1lQmVmb3JlU2hvdz86IG51bWJlcjsgLy8gZGVsYXkgYmVmb3JlIHN0ZXAgaXMgZGlzcGxheWVkXG4gIGludGVydmFsPzogbnVtYmVyOyAvLyB0aW1lIGJldHdlZW4gc2VhcmNoZXMgZm9yIGVsZW1lbnQsIGRlZmF1bHRzIHRvIDUwMG1zXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJPcHRpb25zIGV4dGVuZHMgU2hlcGhlcmQuVG91ci5Ub3VyT3B0aW9ucyB7XG4gIGFib3J0T24/OiBJVG91ckV2ZW50T25bXTsgLy8gZXZlbnRzIHRvIGFib3J0IG9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJTdGVwQXR0YWNoVG9PcHRpb25zIGV4dGVuZHMgSVRvdXJFdmVudE9uT3B0aW9ucyB7XG4gIGhpZ2hsaWdodD86IGJvb2xlYW47XG4gIHJldHJpZXM/OiBudW1iZXI7IC8vICMgbnVtIG9mIGF0dGVtcHRzIHRvIGZpbmQgZWxlbWVudFxuICBza2lwSWZOb3RGb3VuZD86IGJvb2xlYW47IC8vIGlmIGVsZW1lbnQgaXMgbm90IGZvdW5kIGFmdGVyIG4gcmV0cmllcywgbW92ZSBvbiB0byBuZXh0IHN0ZXBcbiAgZWxzZT86IHN0cmluZzsgLy8gaWYgZWxlbWVudCBpcyBub3QgZm91bmQsIGdvIHRvIHN0ZXAgd2l0aCB0aGlzIGlkXG4gIGdvQmFja1RvPzogc3RyaW5nOyAvLyBiYWNrIGJ1dHRvbiBnb2VzIGJhY2sgdG8gc3RlcCB3aXRoIHRoaXMgaWRcbiAgc2tpcEZyb21TdGVwQ291bnQ/OiBib29sZWFuOyAvLyBzaG93L2hpZGUgcHJvZ3Jlc3Mgb24gc3RlcFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyU3RlcEFkdmFuY2VPbk9wdGlvbnMgZXh0ZW5kcyBJVG91ckV2ZW50T25PcHRpb25zIHtcbiAganVtcFRvPzogc3RyaW5nOyAvLyBuZXh0IGJ1dHRvbiB3aWxsIGp1bXAgdG8gc3RlcCB3aXRoIHRoaXMgaWRcbiAgYWxsb3dHb0JhY2s/OiBib29sZWFuOyAvLyBhbGxvdyBiYWNrIHdpdGhpbiB0aGlzIHN0ZXBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91clN0ZXAgZXh0ZW5kcyBUb3VyU3RlcCB7XG4gIGF0dGFjaFRvT3B0aW9ucz86IElUb3VyU3RlcEF0dGFjaFRvT3B0aW9ucztcbiAgYWR2YW5jZU9uT3B0aW9ucz86IElUb3VyU3RlcEFkdmFuY2VPbk9wdGlvbnM7XG4gIGFkdmFuY2VPbj86IElUb3VyRXZlbnRPbltdIHwgSVRvdXJFdmVudE9uIHwgYW55O1xuICBhYm9ydE9uPzogSVRvdXJFdmVudE9uW107XG4gIGNvdW50PzogbnVtYmVyO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBUb3VyQnV0dG9uc0FjdGlvbnMge1xuICBhYnN0cmFjdCBuZXh0KCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgYmFjaygpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGNhbmNlbCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGZpbmlzaCgpOiB2b2lkO1xufVxuXG5jb25zdCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyA9IDEwMDtcbmNvbnN0IFNIRVBIRVJEX0RFRkFVTFRfRklORF9JTlRFUlZBTCA9IDUwMDtcbmNvbnN0IFNIRVBIRVJEX0RFRkFVTFRfRklORF9BVFRFTVBUUyA9IDIwO1xuXG5jb25zdCBvdmVycmlkZGVuRXZlbnRzOiBzdHJpbmdbXSA9IFtcbiAgSVRvdXJFdmVudC5jbGljayxcbiAgSVRvdXJFdmVudC5wb2ludGVyb3ZlcixcbiAgSVRvdXJFdmVudC5yZW1vdmVkLFxuICBJVG91ckV2ZW50LmFkZGVkLFxuICBJVG91ckV2ZW50LmtleXVwLFxuXTtcblxuY29uc3Qga2V5RXZlbnRzOiBNYXA8bnVtYmVyLCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oW1xuICBbMTMsICdlbnRlciddLFxuICBbMjcsICdlc2MnXSxcbl0pO1xuXG5jb25zdCBkZWZhdWx0U3RlcE9wdGlvbnM6IFRvdXJTdGVwID0ge1xuICBzY3JvbGxUbzogeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9LFxuICBjYW5jZWxJY29uOiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfSxcbn07XG5cbmNvbnN0IE1BVF9JQ09OX0JVVFRPTiA9XG4gICdtZGMtaWNvbi1idXR0b24gbWF0ZXJpYWwtaWNvbnMgbWF0LW1kYy1pY29uLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbi1iYXNlJztcbmNvbnN0IE1BVF9CVVRUT04gPSAnbWRjLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbiBtYXQtbWRjLWJ1dHRvbi1iYXNlJztcbmNvbnN0IE1BVF9CVVRUT05fSU5WSVNJQkxFID0gJ3NoZXBoZXJkLXZvaWQtYnV0dG9uJztcblxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91ciBleHRlbmRzIFRvdXJCdXR0b25zQWN0aW9ucyB7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZEV2ZW50JCE6IFN1YmplY3Q8dm9pZD47XG5cbiAgc2hlcGhlcmRUb3VyITogU2hlcGhlcmQuVG91cjtcbiAgc3RlcE9wdGlvbnM6IElUb3VyU3RlcDtcblxuICBjb25zdHJ1Y3RvcihzdGVwT3B0aW9uczogSVRvdXJTdGVwID0gZGVmYXVsdFN0ZXBPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuc3RlcE9wdGlvbnMgPSBzdGVwT3B0aW9ucztcbiAgICB0aGlzLm5ld1RvdXIoKTtcbiAgfVxuXG4gIG5ld1RvdXIob3B0cz86IElUb3VyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyID0gbmV3IFNoZXBoZXJkLlRvdXIoXG4gICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICB7XG4gICAgICAgICAgZGVmYXVsdFN0ZXBPcHRpb25zOiB0aGlzLnN0ZXBPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLy8gbGlzdGVuIHRvIGNhbmNlbCBhbmQgY29tcGxldGUgdG8gY2xlYW4gdXAgYWJvcnRPbiBldmVudHNcbiAgICBtZXJnZShcbiAgICAgIGZyb21FdmVudCh0aGlzLnNoZXBoZXJkVG91ciwgJ2NhbmNlbCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCAnY29tcGxldGUnKVxuICAgIClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICBpZiAob3B0cyAmJiBvcHRzLmFib3J0T24pIHtcbiAgICAgIGNvbnN0IGFib3J0QXJyJDogU3ViamVjdDx2b2lkPltdID0gW107XG4gICAgICBvcHRzLmFib3J0T24uZm9yRWFjaCgoYWJvcnRPbjogSVRvdXJFdmVudE9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgYWJvcnRBcnIkLnB1c2goYWJvcnRFdmVudCQpO1xuICAgICAgICB0aGlzLl9iaW5kRXZlbnQoYWJvcnRPbiwgdW5kZWZpbmVkLCBhYm9ydEV2ZW50JCwgdGhpcy5fZGVzdHJveWVkRXZlbnQkKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhYm9ydFN1YnM6IFN1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLmFib3J0QXJyJClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNhbmNlbCgpO1xuICB9XG5cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gIH1cblxuICBmaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFkZFN0ZXBzKHN0ZXBzOiBJVG91clN0ZXBbXSk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKHRoaXMuX3ByZXBhcmVUb3VyKHN0ZXBzKSk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5zdGFydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wcmVwYXJlVG91cihcbiAgICBvcmlnaW5hbFN0ZXBzOiBJVG91clN0ZXBbXSxcbiAgICBmaW5pc2hMYWJlbCA9ICdmaW5pc2gnXG4gICk6IElUb3VyU3RlcFtdIHtcbiAgICAvLyBjcmVhdGUgU3ViamVjdHMgZm9yIGJhY2sgYW5kIGZvcndhcmQgZXZlbnRzXG4gICAgY29uc3QgYmFja0V2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgY29uc3QgZm9yd2FyZEV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgbGV0IF9iYWNrRmxvdyA9IGZhbHNlO1xuICAgIC8vIGNyZWF0ZSBTdWJqZWN0IGZvciB5b3VyIGVuZFxuICAgIGNvbnN0IGRlc3Ryb3llZEV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBzdGVwIHByb2dyZXNzIGluIHRoZSBmb290ZXIgb2YgdGhlIHNoZXBoZXJkIHRvb2x0aXBcbiAgICAgKi9cbiAgICBjb25zdCBhcHBlbmRQcm9ncmVzc0Z1bmMgPSBmdW5jdGlvbiAodGhpczogYW55KTogdm9pZCB7XG4gICAgICAvLyBnZXQgYWxsIHRoZSBmb290ZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBpbiB0aGUgRE9NXG4gICAgICBjb25zdCBmb290ZXJzOiBFbGVtZW50W10gPSBBcnJheS5mcm9tPEVsZW1lbnQ+KFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2hlcGhlcmQtZm9vdGVyJylcbiAgICAgICk7XG4gICAgICAvLyBnZXQgdGhlIGxhc3QgZm9vdGVyIHNpbmNlIFNoZXBoZXJkIGFsd2F5cyBwdXRzIHRoZSBhY3RpdmUgb25lIGF0IHRoZSBlbmRcbiAgICAgIGNvbnN0IGZvb3RlcjogRWxlbWVudCA9IGZvb3RlcnNbZm9vdGVycy5sZW5ndGggLSAxXTtcbiAgICAgIC8vIGdlbmVyYXRlIHN0ZXBzIGh0bWwgZWxlbWVudFxuICAgICAgY29uc3QgcHJvZ3Jlc3M6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHByb2dyZXNzLmNsYXNzTmFtZSA9ICdzaGVwaGVyZC1wcm9ncmVzcyc7XG4gICAgICBwcm9ncmVzcy5pbm5lclRleHQgPSBgJHt0aGlzLnNoZXBoZXJkVG91ci5jdXJyZW50U3RlcC5vcHRpb25zLmNvdW50fS8ke3N0ZXBUb3RhbH1gO1xuICAgICAgLy8gaW5zZXJ0IGludG8gdGhlIGZvb3RlciBiZWZvcmUgdGhlIGZpcnN0IGJ1dHRvblxuICAgICAgZm9vdGVyLmluc2VydEJlZm9yZShwcm9ncmVzcywgZm9vdGVyLnF1ZXJ5U2VsZWN0b3IoJy5zaGVwaGVyZC1idXR0b24nKSk7XG4gICAgfTtcblxuICAgIGxldCBzdGVwVG90YWwgPSAwO1xuICAgIGNvbnN0IHN0ZXBzOiBJVG91clN0ZXBbXSA9IG9yaWdpbmFsU3RlcHMubWFwKChzdGVwOiBJVG91clN0ZXApID0+IHtcbiAgICAgIGxldCBzaG93UHJvZ3Jlc3M6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8vXG4gICAgICB9O1xuICAgICAgaWYgKHN0ZXAuYXR0YWNoVG9PcHRpb25zPy5za2lwRnJvbVN0ZXBDb3VudCA9PT0gdHJ1ZSkge1xuICAgICAgICBzaG93UHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnM/LnNraXBGcm9tU3RlcENvdW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnM/LnNraXBGcm9tU3RlcENvdW50ID09PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIHN0ZXAuY291bnQgPSArK3N0ZXBUb3RhbDtcbiAgICAgICAgc2hvd1Byb2dyZXNzID0gYXBwZW5kUHJvZ3Jlc3NGdW5jLmJpbmQodGhpcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RlcCwge1xuICAgICAgICB3aGVuOiB7XG4gICAgICAgICAgc2hvdzogc2hvd1Byb2dyZXNzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaW5pc2hCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgdGV4dDogZmluaXNoTGFiZWwsXG4gICAgICBhY3Rpb246IHRoaXNbJ2ZpbmlzaCddLmJpbmQodGhpcyksXG4gICAgICBjbGFzc2VzOiBNQVRfQlVUVE9OLFxuICAgIH07XG5cbiAgICBjb25zdCB2b2lkQnV0dG9uOiBUb3VyU3RlcEJ1dHRvbiA9IHtcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgYWN0aW9uKCk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICB9LFxuICAgICAgY2xhc3NlczogTUFUX0JVVFRPTl9JTlZJU0lCTEUsXG4gICAgfTtcblxuICAgIC8vIGxpc3RlbiB0byB0aGUgZGVzdHJveWVkIGV2ZW50IHRvIGNsZWFuIHVwIGFsbCB0aGUgc3RyZWFtc1xuICAgIHRoaXMuX2Rlc3Ryb3llZEV2ZW50JC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBiYWNrRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICBmb3J3YXJkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICBkZXN0cm95ZWRFdmVudCQubmV4dCgpO1xuICAgICAgZGVzdHJveWVkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbFN0ZXBzOiBudW1iZXIgPSBzdGVwcy5sZW5ndGg7XG4gICAgc3RlcHMuZm9yRWFjaCgoc3RlcDogSVRvdXJTdGVwLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAvLyBjcmVhdGUgYnV0dG9ucyBzcGVjaWZpYyBmb3IgdGhlIHN0ZXBcbiAgICAgIC8vIHRoaXMgaXMgZG9uZSB0byBjcmVhdGUgbW9yZSBjb250cm9sIG9uIGV2ZW50c1xuICAgICAgY29uc3QgbmV4dEJ1dHRvbjogVG91clN0ZXBCdXR0b24gPSB7XG4gICAgICAgIHRleHQ6ICdjaGV2cm9uX3JpZ2h0JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gaW50ZXJjZXB0IHRoZSBuZXh0IGFjdGlvbiBhbmQgdHJpZ2dlciBldmVudFxuICAgICAgICAgIGZvcndhcmRFdmVudCQubmV4dCgpO1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczogTUFUX0lDT05fQlVUVE9OLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGJhY2tCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgICB0ZXh0OiAnY2hldnJvbl9sZWZ0JyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gaW50ZXJjZXB0IHRoZSBiYWNrIGFjdGlvbiBhbmQgdHJpZ2dlciBldmVudFxuICAgICAgICAgIGJhY2tFdmVudCQubmV4dCgpO1xuICAgICAgICAgIF9iYWNrRmxvdyA9IHRydWU7XG4gICAgICAgICAgLy8gY2hlY2sgaWYgJ2dvQmFja1RvJyBpcyBzZXQgdG8ganVtcCB0byBhIHBhcnRpY3VsYXIgc3RlcCwgZWxzZSBqdXN0IGdvIGJhY2tcbiAgICAgICAgICBpZiAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuZ29CYWNrVG8pIHtcbiAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLnNob3coc3RlcC5hdHRhY2hUb09wdGlvbnMuZ29CYWNrVG8sIGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczpcbiAgICAgICAgICBzdGVwLmFkdmFuY2VPbk9wdGlvbnM/LmFsbG93R29CYWNrID09PSBmYWxzZVxuICAgICAgICAgICAgPyBNQVRfQlVUVE9OX0lOVklTSUJMRVxuICAgICAgICAgICAgOiBNQVRfSUNPTl9CVVRUT04sXG4gICAgICB9O1xuXG4gICAgICAvLyBjaGVjayBpZiBoaWdobGlnaHQgd2FzIHByb3ZpZGVkIGZvciB0aGUgc3RlcCwgZWxzZSBmYWxsYmFjayBpbnRvIHNoZXBoZXJkcyB1c2FnZVxuICAgICAgc3RlcC5oaWdobGlnaHRDbGFzcyA9XG4gICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLmhpZ2hsaWdodFxuICAgICAgICAgID8gJ3NoZXBoZXJkLWhpZ2hsaWdodCdcbiAgICAgICAgICA6IHN0ZXAuaGlnaGxpZ2h0Q2xhc3M7XG5cbiAgICAgIC8vIEFkZGluZyBidXR0b25zIGluIHRoZSBzdGVwcyBpZiBubyBidXR0b25zIGFyZSBkZWZpbmVkXG4gICAgICBpZiAoIXN0ZXAuYnV0dG9ucyB8fCBzdGVwLmJ1dHRvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgIC8vIGZpcnN0IHN0ZXBcbiAgICAgICAgICBzdGVwLmJ1dHRvbnMgPSBbbmV4dEJ1dHRvbl07XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IHRvdGFsU3RlcHMgLSAxKSB7XG4gICAgICAgICAgLy8gbGFzdCBzdGVwXG4gICAgICAgICAgc3RlcC5idXR0b25zID0gW2JhY2tCdXR0b24sIGZpbmlzaEJ1dHRvbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RlcC5idXR0b25zID0gW2JhY2tCdXR0b24sIG5leHRCdXR0b25dO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrcyBcImFkdmFuY2VPblwiIHRvIG92ZXJyaWRlIGxpc3RlbmVyc1xuICAgICAgbGV0IGFkdmFuY2VPbjogSVRvdXJFdmVudE9uW10gfCBJVG91ckV2ZW50T24gPSBzdGVwLmFkdmFuY2VPbjtcbiAgICAgIC8vIHJlbW92ZSB0aGUgc2hlcGhlcmQgXCJhZHZhbmNlT25cIiBpbmZhdm9yIG9mIG91cnMgaWYgdGhlIGV2ZW50IGlzIHBhcnQgb2Ygb3VyIGxpc3RcbiAgICAgIGlmIChcbiAgICAgICAgKHR5cGVvZiBhZHZhbmNlT24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWR2YW5jZU9uKSAmJlxuICAgICAgICAgIGFkdmFuY2VPbi5ldmVudCAmJlxuICAgICAgICAgIG92ZXJyaWRkZW5FdmVudHMuaW5kZXhPZihhZHZhbmNlT24uZXZlbnQuc3BsaXQoJy4nKVswXSkgPiAtMSkgfHxcbiAgICAgICAgYWR2YW5jZU9uIGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICkge1xuICAgICAgICBzdGVwLmFkdmFuY2VPbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3RlcC5idXR0b25zID1cbiAgICAgICAgICBzdGVwLmFkdmFuY2VPbk9wdGlvbnMgJiYgc3RlcC5hZHZhbmNlT25PcHRpb25zLmFsbG93R29CYWNrXG4gICAgICAgICAgICA/IFtiYWNrQnV0dG9uLCB2b2lkQnV0dG9uXVxuICAgICAgICAgICAgOiBbdm9pZEJ1dHRvbl07XG4gICAgICB9XG4gICAgICAvLyBhZGRzIGEgZGVmYXVsdCBiZWZvcmVTaG93UHJvbWlzZSBmdW5jdGlvblxuICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzU2V0dXA6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWR2YW5jZU9uICYmICFzdGVwLmFkdmFuY2VPbikge1xuICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWR2YW5jZU9uKSkge1xuICAgICAgICAgICAgICAgIGFkdmFuY2VPbiA9IFthZHZhbmNlT25dO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZUFyciQ6IFN1YmplY3Q8dm9pZD5bXSA9IFtdO1xuICAgICAgICAgICAgICBhZHZhbmNlT24uZm9yRWFjaCgoXzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZUV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAgICAgICAgICAgYWR2YW5jZUFyciQucHVzaChhZHZhbmNlRXZlbnQkKTtcblxuICAgICAgICAgICAgICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICAgICAgICAgICAgICB0aGlzLl9iaW5kRXZlbnQoXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgc3RlcC5hZHZhbmNlT25PcHRpb25zLFxuICAgICAgICAgICAgICAgICAgYWR2YW5jZUV2ZW50JCxcbiAgICAgICAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCBhZHZhbmNlU3ViczogU3Vic2NyaXB0aW9uID0gZm9ya0pvaW4oLi4uYWR2YW5jZUFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCwgYmFja0V2ZW50JCkpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBhZHZhbmNlIHRvIGEgc3BlY2lmaWMgc3RlcCwgZWxzZSBhZHZhbmNlIHRvIG5leHQgc3RlcFxuICAgICAgICAgICAgICAgICAgaWYgKHN0ZXAuYWR2YW5jZU9uT3B0aW9ucyAmJiBzdGVwLmFkdmFuY2VPbk9wdGlvbnMuanVtcFRvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLnNob3coc3RlcC5hZHZhbmNlT25PcHRpb25zLmp1bXBUbyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBmb3J3YXJkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCBvbiB0aGUgc3RlcCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICAgICAgICAgIGlmIChzdGVwLmFib3J0T24pIHtcbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRBcnIkOiBTdWJqZWN0PHZvaWQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgc3RlcC5hYm9ydE9uLmZvckVhY2goKGFib3J0T246IElUb3VyRXZlbnRPbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICAgICAgICBhYm9ydEFyciQucHVzaChhYm9ydEV2ZW50JCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmluZEV2ZW50KFxuICAgICAgICAgICAgICAgICAgYWJvcnRPbixcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGFib3J0RXZlbnQkLFxuICAgICAgICAgICAgICAgICAgZGVzdHJveWVkRXZlbnQkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRTdWJzOiBTdWJzY3JpcHRpb24gPSBtZXJnZSguLi5hYm9ydEFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZGVzdHJveWVkRXZlbnQkLCBiYWNrRXZlbnQkLCBmb3J3YXJkRXZlbnQkKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IF9zdG9wVGltZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICBjb25zdCBfcmV0cmllc1JlYWNoZWQkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgICAgICAgY29uc3QgX3JldHJ5QXR0ZW1wdHMkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9XG4gICAgICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuXG4gICAgICAgICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgLy8gY2hlY2tzIGlmIFwiYXR0YWNoVG9cIiBpcyBhIHN0cmluZyBvciBhbiBvYmplY3QgdG8gZ2V0IHRoZSBpZCBvZiBhbiBlbGVtZW50XG4gICAgICAgICAgaWYgKHR5cGVvZiBzdGVwLmF0dGFjaFRvID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWQgPSBzdGVwLmF0dGFjaFRvO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0eXBlb2Ygc3RlcC5hdHRhY2hUbyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzdGVwLmF0dGFjaFRvLmVsZW1lbnQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZCA9IHN0ZXAuYXR0YWNoVG8uZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiBpZCBhcyBhIHN0cmluZyBpbiBlaXRoZXIgY2FzZSwgd2UgdXNlIGl0ICh3ZSBpZ25vcmUgaXQgaWYgaXRzIEhUTUxFbGVtZW50KVxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBzdGVwIGlzIHRoZSBmaXJzdCBzdGVwIG9mIHRoZSB0b3VyLCB3ZSBzZXQgdGhlIGJ1dHRvbnMgdG8gYmUgb25seSBcIm5leHRcIlxuICAgICAgICAgICAgLy8gd2UgaGFkIHRvIHVzZSBgYW55YCBzaW5jZSB0aGUgdG91ciBkb2VzbnQgZXhwb3NlIHRoZSBzdGVwcyBpbiBhbnkgZmFzaGlvbiBub3IgYSB3YXkgdG8gY2hlY2sgaWYgd2UgaGF2ZSBtb2RpZmllZCB0aGVtIGF0IGFsbFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpID09PVxuICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHNbMF1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpPy51cGRhdGVTdGVwT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgYnV0dG9uczogb3JpZ2luYWxTdGVwc1tpbmRleF0uYWR2YW5jZU9uXG4gICAgICAgICAgICAgICAgICA/IFt2b2lkQnV0dG9uXVxuICAgICAgICAgICAgICAgICAgOiBbbmV4dEJ1dHRvbl0sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdG8gdGhlIGF0dGVtcHRzIG9ic2VydmFibGUgdG8gbm90aWZ5IGRlZXZlbG9wZXIgd2hlbiBudW1iZXIgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgc2tpcFdoaWxlKCh2YWw6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucy5yZXRyaWVzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsIDwgc3RlcC5hdHRhY2hUb09wdGlvbnMucmV0cmllcztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwgPCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfQVRURU1QVFM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKF9zdG9wVGltZXIkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGF0dGVtcHRzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBfcmV0cmllc1JlYWNoZWQkLm5leHQoMSk7XG4gICAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIC8vIGlmIGF0dGVtcHRzIGhhdmUgYmVlbiByZWFjaGVkLCB3ZSBjaGVjayBcInNraXBJZk5vdEZvdW5kXCIgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnNraXBJZk5vdEZvdW5kXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBnZXQgdG8gdGhpcyBzdGVwIGNvbWluZyBiYWNrIGZyb20gYSBzdGVwIGFuZCBpdCB3YXNudCBmb3VuZFxuICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBlaXRoZXIgY2hlY2sgaWYgaXRzIHRoZSBmaXJzdCBzdGVwIGFuZCB0cnkgZ29pbmcgZm9yd2FyZFxuICAgICAgICAgICAgICAgICAgLy8gb3Igd2Uga2VlcCBnb2luZyBiYWNrIHVudGlsIHdlIGZpbmQgYSBzdGVwIHRoYXQgYWN0dWFsbHkgZXhpc3RzXG4gICAgICAgICAgICAgICAgICBpZiAoX2JhY2tGbG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHMuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmdldEN1cnJlbnRTdGVwKClcbiAgICAgICAgICAgICAgICAgICAgICApID09PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5iYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2JhY2tGbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZXN0cm95cyBjdXJyZW50IHN0ZXAgaWYgd2UgbmVlZCB0byBza2lwIGl0IHRvIHJlbW92ZSBpdCBmcm9tIHRoZSB0b3VyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5zaGVwaGVyZFRvdXIuZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5yZW1vdmVTdGVwKGN1cnJlbnRTdGVwPy5pZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJiBzdGVwLmF0dGFjaFRvT3B0aW9ucy5lbHNlKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiBcInNraXBJZk5vdEZvdW5kXCIgaXMgbm90IHRydWUsIHRoZW4gd2UgY2hlY2sgaWYgXCJlbHNlXCIgaGFzIGJlZW4gc2V0IHRvIGp1bXAgdG8gYSBzcGVjaWZpYyBzdGVwXG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5zaG93KHN0ZXAuYXR0YWNoVG9PcHRpb25zLmVsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBgUmV0cmllcyByZWFjaGVkIHRyeWluZyB0byBmaW5kICR7aWR9LiBSZXRyaWVkICAke2F0dGVtcHRzfSB0aW1lcy5gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gZWxzZSB3ZSBzaG93IHRoZSBzdGVwIHJlZ2FyZGxlc3NcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyB3ZSBzdGFydCBhIHRpbWVyIG9mIGF0dGVtcHRzIHRvIGZpbmQgYW4gZWxlbWVudCBpbiB0aGUgZG9tXG4gICAgICAgICAgICB0aW1lcihcbiAgICAgICAgICAgICAgKHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICAgICAgICAgIFNIRVBIRVJEX0RFRkFVTFRfRklORF9USU1FX0JFRk9SRV9TSE9XLFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuaW50ZXJ2YWwpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIHRoZSB0aW1lciB3aWxsIGNvbnRpbnVlIGVpdGhlciB1bnRpbCB3ZSBmaW5kIHRoZSBlbGVtZW50IG9yIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZShfc3RvcFRpbWVyJCwgX3JldHJpZXNSZWFjaGVkJCwgZGVzdHJveWVkRXZlbnQkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQsIHdlIHN0b3AgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzU2V0dXAoKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkLm5leHQoX3JldHJ5QXR0ZW1wdHMkLnZhbHVlICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gc3RvcCBmaW5kIGludGVydmFsIGlmIHVzZXIgc3RvcHMgdGhlIHRvdXJcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBfc3RvcFRpbWVyJC5uZXh0KCk7XG4gICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIF9yZXRyaWVzUmVhY2hlZCQubmV4dCgxKTtcbiAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJlc29sdmUgb2JzZXJ2YWJsZSB1bnRpbCB0aGUgdGltZUJlZm9yZVNob3cgaGFzIHBhc3NzZWQgb3IgdXNlIGRlZmF1bHRcbiAgICAgICAgICAgIHRpbWVyKFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMudGltZUJlZm9yZVNob3cpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX1RJTUVfQkVGT1JFX1NIT1dcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCkpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIHByaXZhdGUgX2JpbmRFdmVudChcbiAgICBldmVudE9uOiBJVG91ckV2ZW50T24sXG4gICAgZXZlbnRPbk9wdGlvbnM6IElUb3VyRXZlbnRPbk9wdGlvbnMgfCB1bmRlZmluZWQsXG4gICAgZXZlbnQkOiBTdWJqZWN0PHZvaWQ+LFxuICAgIGRlc3Ryb3llZEV2ZW50JDogU3ViamVjdDx2b2lkPlxuICApOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGV2ZW50T24uc2VsZWN0b3IgPz8gJyc7XG4gICAgY29uc3QgZXZlbnQgPSBldmVudE9uLmV2ZW50O1xuICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICBjb25zdCB0aW1lclN1YnM6IFN1YnNjcmlwdGlvbiA9IHRpbWVyKFxuICAgICAgKGV2ZW50T25PcHRpb25zICYmIGV2ZW50T25PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyxcbiAgICAgIChldmVudE9uT3B0aW9ucyAmJiBldmVudE9uT3B0aW9ucy5pbnRlcnZhbCkgfHxcbiAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCBoYXMgYmVlbiBmb3VuZCwgd2Ugc3RvcCB0aGUgdGltZXIgYW5kIHJlc29sdmUgdGhlIHByb21pc2VcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICB0aW1lclN1YnMudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIGlmIChldmVudCA9PT0gSVRvdXJFdmVudC5hZGRlZCkge1xuICAgICAgICAgICAgLy8gaWYgZXZlbnQgaXMgXCJBZGRlZFwiIHRyaWdnZXIgYSBzb29uIGFzIHRoaXMgaXMgYXR0YWNoZWQuXG4gICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGV2ZW50ID09PSBJVG91ckV2ZW50LmNsaWNrIHx8XG4gICAgICAgICAgICBldmVudCA9PT0gSVRvdXJFdmVudC5wb2ludGVyb3ZlciB8fFxuICAgICAgICAgICAgKGV2ZW50ICYmIGV2ZW50LmluZGV4T2YoSVRvdXJFdmVudC5rZXl1cCkgPiAtMSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIHdlIHVzZSBub3JtYWwgbGlzdGVuZXJzIGZvciBtb3VzZWV2ZW50c1xuICAgICAgICAgICAgY29uc3QgbWFpbkV2ZW50ID0gZXZlbnQ/LnNwbGl0KCcuJylbMF07XG4gICAgICAgICAgICBjb25zdCBzdWJFdmVudCA9IGV2ZW50Py5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQsIG1haW5FdmVudClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBvbmx5IHRyaWdnZXIgaWYgdGhlIGV2ZW50IGlzIGEga2V5Ym9hcmQgZXZlbnQgYW5kIHBhcnQgb2Ygb3V0IGxpc3RcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlFdmVudHMuZ2V0KCRldmVudC5rZXlDb2RlKSA9PT0gc3ViRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZXZlbnQkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09IElUb3VyRXZlbnQucmVtb3ZlZCkge1xuICAgICAgICAgICAgLy8gYW5kIHdlIHdpbGwgdXNlIE11dGF0aW9uT2JzZXJ2ZXIgZm9yIERPTSBldmVudHNcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIHN0b3AgbGlzdGVuaW5pbmcgaWYgdG91ciBpcyBjbG9zZWRcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIG9ic2VydmUgZm9yIGFueSBET00gaW50ZXJhY3Rpb24gaW4gdGhlIGVsZW1lbnRcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Router, ActivatedRoute, NavigationStart, } from '@angular/router';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { CovalentGuidedTour, } from './guided.tour';\nimport * as i0 from \"@angular/core\";\n/**\n * Router enabled Shepherd tour\n */\nexport var TourEvents;\n(function (TourEvents) {\n TourEvents[\"complete\"] = \"complete\";\n TourEvents[\"cancel\"] = \"cancel\";\n TourEvents[\"hide\"] = \"hide\";\n TourEvents[\"show\"] = \"show\";\n TourEvents[\"start\"] = \"start\";\n TourEvents[\"active\"] = \"active\";\n TourEvents[\"inactive\"] = \"inactive\";\n})(TourEvents || (TourEvents = {}));\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n _router = inject(Router);\n _route = inject(ActivatedRoute);\n _httpClient = inject(HttpClient);\n _toursMap = new Map();\n _tourStepURLs = new Map();\n constructor() {\n super();\n const _router = this._router;\n _router.events\n .pipe(filter((event) => event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'))\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n tourEvent$(str) {\n return fromEvent(this.shepherdTour, str);\n }\n async registerTour(tourName, tour) {\n const guidedTour = typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n startTour(tourName) {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance = this.shepherdTour.addSteps(this._configureRoutesForSteps(this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)));\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe((tourEvent) => {\n const currentURL = this._router.url.split(/[?#]/)[0];\n const { step: { id, options }, } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n }\n else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n }\n else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n });\n this.start();\n return tourInstance;\n }\n else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam = 'tour') {\n return this._route.queryParamMap.pipe(debounceTime(100), tap((params) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams = new URLSearchParams(window.location.search);\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url = window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n }));\n }\n setNextBtnDisability(stepId, isDisabled) {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions = this.shepherdTour.getById(stepId)\n .options;\n stepOptions.buttons?.forEach((button) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n async _loadTour(tourUrl) {\n const request = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(map((resultSet) => {\n return JSON.parse(JSON.stringify(resultSet));\n }))\n .toPromise();\n }\n catch {\n return undefined;\n }\n }\n _getTour(key) {\n return this._toursMap.get(key);\n }\n _configureRoutesForSteps(routedSteps) {\n routedSteps.forEach((step) => {\n if (step.routing) {\n const route = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n }\n else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n return routedSteps;\n }\n static ɵfac = function CovalentGuidedTourService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentGuidedTourService)(); };\n static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CovalentGuidedTourService, factory: CovalentGuidedTourService.ɵfac });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CovalentGuidedTourService, [{\n type: Injectable\n }], () => [], null); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1ndWlkZWQtdG91ci9zcmMvbGliL2d1aWRlZC10b3VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUdkLGVBQWUsR0FFaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsa0JBQWtCLEdBSW5CLE1BQU0sZUFBZSxDQUFDOztBQWN2Qjs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFVBUVg7QUFSRCxXQUFZLFVBQVU7SUFDcEIsbUNBQXFCLENBQUE7SUFDckIsK0JBQWlCLENBQUE7SUFDakIsMkJBQWEsQ0FBQTtJQUNiLDJCQUFhLENBQUE7SUFDYiw2QkFBZSxDQUFBO0lBQ2YsK0JBQWlCLENBQUE7SUFDakIsbUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVJXLFVBQVUsS0FBVixVQUFVLFFBUXJCO0FBU0QsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGtCQUFrQjtJQUN2RCxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqQyxTQUFTLEdBQTZC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QUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7bUhBdEtVLHlCQUF5QjtnRUFBekIseUJBQXlCLFdBQXpCLHlCQUF5Qjs7aUZBQXpCLHlCQUF5QjtjQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgUGFyYW1NYXAsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgRXZlbnQgYXMgTmF2aWdhdGlvbkV2ZW50LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IFNoZXBoZXJkIGZyb20gJ3NoZXBoZXJkLmpzJztcbmltcG9ydCB7IHRhcCwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvdmFsZW50R3VpZGVkVG91cixcbiAgSVRvdXJTdGVwLFxuICBJVG91ck9wdGlvbnMsXG4gIFRvdXJTdGVwQnV0dG9uLFxufSBmcm9tICcuL2d1aWRlZC50b3VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91ciBleHRlbmRzIElUb3VyT3B0aW9ucyB7XG4gIHN0ZXBzOiBJR3VpZGVkVG91clN0ZXBbXTtcbiAgZmluaXNoQnV0dG9uVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91clN0ZXAgZXh0ZW5kcyBJVG91clN0ZXAge1xuICByb3V0aW5nPzoge1xuICAgIHJvdXRlOiBzdHJpbmc7XG4gICAgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcztcbiAgfTtcbn1cblxuLyoqXG4gKiAgUm91dGVyIGVuYWJsZWQgU2hlcGhlcmQgdG91clxuICovXG5leHBvcnQgZW51bSBUb3VyRXZlbnRzIHtcbiAgY29tcGxldGUgPSAnY29tcGxldGUnLFxuICBjYW5jZWwgPSAnY2FuY2VsJyxcbiAgaGlkZSA9ICdoaWRlJyxcbiAgc2hvdyA9ICdzaG93JyxcbiAgc3RhcnQgPSAnc3RhcnQnLFxuICBhY3RpdmUgPSAnYWN0aXZlJyxcbiAgaW5hY3RpdmUgPSAnaW5hY3RpdmUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHdWlkZWRUb3VyRXZlbnQge1xuICBzdGVwOiBhbnk7XG4gIHByZXZpb3VzOiBhbnk7XG4gIHRvdXI6IGFueTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91clNlcnZpY2UgZXh0ZW5kcyBDb3ZhbGVudEd1aWRlZFRvdXIge1xuICBwcml2YXRlIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9odHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIHByaXZhdGUgX3RvdXJzTWFwOiBNYXA8c3RyaW5nLCBJR3VpZGVkVG91cj4gPSBuZXcgTWFwPHN0cmluZywgSUd1aWRlZFRvdXI+KCk7XG4gIHByaXZhdGUgX3RvdXJTdGVwVVJMczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgX3JvdXRlciA9IHRoaXMuX3JvdXRlcjtcblxuICAgIF9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogTmF2aWdhdGlvbkV2ZW50KSA9PlxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgJiZcbiAgICAgICAgICAgIGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgdG91ckV2ZW50JChzdHI6IFRvdXJFdmVudHMpOiBPYnNlcnZhYmxlPElHdWlkZWRUb3VyRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCBzdHIpO1xuICB9XG5cbiAgYXN5bmMgcmVnaXN0ZXJUb3VyKFxuICAgIHRvdXJOYW1lOiBzdHJpbmcsXG4gICAgdG91cjogSUd1aWRlZFRvdXIgfCBzdHJpbmcsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGd1aWRlZFRvdXI6IElHdWlkZWRUb3VyID1cbiAgICAgIHR5cGVvZiB0b3VyID09PSAnc3RyaW5nJyA/IGF3YWl0IHRoaXMuX2xvYWRUb3VyKHRvdXIpIDogdG91cjtcbiAgICB0aGlzLl90b3Vyc01hcC5zZXQodG91ck5hbWUsIGd1aWRlZFRvdXIpO1xuICB9XG5cbiAgc3RhcnRUb3VyKHRvdXJOYW1lOiBzdHJpbmcpOiBTaGVwaGVyZC5Ub3VyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZWRUb3VyID0gdGhpcy5fZ2V0VG91cih0b3VyTmFtZSk7XG4gICAgdGhpcy5maW5pc2goKTtcbiAgICBpZiAoZ3VpZGVkVG91ciAmJiBndWlkZWRUb3VyLnN0ZXBzICYmIGd1aWRlZFRvdXIuc3RlcHMubGVuZ3RoKSB7XG4gICAgICAvLyByZW1vdmUgc3RlcHMgZnJvbSB0b3VyIHNpbmNlIHdlIG5lZWQgdG8gcHJlcHJvY2VzcyB0aGVtIGZpcnN0XG4gICAgICB0aGlzLm5ld1RvdXIoT2JqZWN0LmFzc2lnbih7fSwgZ3VpZGVkVG91ciwgeyBzdGVwczogdW5kZWZpbmVkIH0pKTtcbiAgICAgIGNvbnN0IHRvdXJJbnN0YW5jZTogU2hlcGhlcmQuVG91ciA9IHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKFxuICAgICAgICB0aGlzLl9jb25maWd1cmVSb3V0ZXNGb3JTdGVwcyhcbiAgICAgICAgICB0aGlzLl9wcmVwYXJlVG91cihndWlkZWRUb3VyLnN0ZXBzLCBndWlkZWRUb3VyLmZpbmlzaEJ1dHRvblRleHQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIC8vIGluaXQgcm91dGUgdHJhbnNpdGlvbiBpZiBzdGVwIFVSTCBpcyBkaWZmZXJlbnQgdGhlbiB0aGUgY3VycmVudCBsb2NhdGlvbi5cbiAgICAgIHRoaXMudG91ckV2ZW50JChUb3VyRXZlbnRzLnNob3cpLnN1YnNjcmliZShcbiAgICAgICAgKHRvdXJFdmVudDogSUd1aWRlZFRvdXJFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRVUkw6IHN0cmluZyA9IHRoaXMuX3JvdXRlci51cmwuc3BsaXQoL1s/I10vKVswXTtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBzdGVwOiB7IGlkLCBvcHRpb25zIH0sXG4gICAgICAgICAgfSA9IHRvdXJFdmVudDtcbiAgICAgICAgICBpZiAodGhpcy5fdG91clN0ZXBVUkxzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBSb3V0ZSA9IHRoaXMuX3RvdXJTdGVwVVJMcy5nZXQoaWQpO1xuICAgICAgICAgICAgaWYgKHN0ZXBSb3V0ZSAhPT0gY3VycmVudFVSTCkge1xuICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3N0ZXBSb3V0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJvdXRpbmcpIHtcbiAgICAgICAgICAgICAgdGhpcy5fdG91clN0ZXBVUkxzLnNldChpZCwgb3B0aW9ucy5yb3V0aW5nLnJvdXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX3RvdXJTdGVwVVJMcy5zZXQoaWQsIGN1cnJlbnRVUkwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICByZXR1cm4gdG91ckluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGBUb3VyICR7dG91ck5hbWV9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgdHJ5IGFub3RoZXIgdG91ci5gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRmluZHMgdGhlIHJpZ2h0IHJlZ2lzdGVyZWQgdG91ciBieSB1c2luZyBxdWVyeVBhcmFtc1xuICAvLyBmaW5pc2hlcyBhbnkgb3RoZXIgdG91ciBhbmQgc3RhcnRzIHRoZSBuZXcgb25lLlxuICBpbml0aWFsaXplT25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtID0gJ3RvdXInKTogT2JzZXJ2YWJsZTxQYXJhbU1hcD4ge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIHRhcCgocGFyYW1zOiBQYXJhbU1hcCkgPT4ge1xuICAgICAgICBjb25zdCB0b3VyUGFyYW0gPSBwYXJhbXMuZ2V0KHF1ZXJ5UGFyYW0pO1xuICAgICAgICBpZiAodG91clBhcmFtKSB7XG4gICAgICAgICAgdGhpcy5zdGFydFRvdXIodG91clBhcmFtKTtcbiAgICAgICAgICAvLyBnZXQgY3VycmVudCBzZWFyY2ggcGFyYW1ldGVyc1xuICAgICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBkZWxldGUgdG91ciBxdWVyeVBhcmFtXG4gICAgICAgICAgc2VhcmNoUGFyYW1zLmRlbGV0ZShxdWVyeVBhcmFtKTtcbiAgICAgICAgICAvLyBidWlsZCBuZXcgVVJMIHN0cmluZyB3aXRob3V0IGl0XG4gICAgICAgICAgbGV0IHVybDogc3RyaW5nID1cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArXG4gICAgICAgICAgICAnLy8nICtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICBpZiAoc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIHVybCArPSAnPycgKyBzZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcmVwbGFjZSBzdGF0ZSBpbiBoaXN0b3J5IHdpdGhvdXQgdHJpZ2dlcmluZyBhIG5hdmlnYXRpb25cbiAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBwYXRoOiB1cmwgfSwgJycsIHVybCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBzZXROZXh0QnRuRGlzYWJpbGl0eShzdGVwSWQ6IHN0cmluZywgaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCkpIHtcbiAgICAgIGNvbnN0IHN0ZXBPcHRpb25zOiBJVG91clN0ZXAgPSAodGhpcy5zaGVwaGVyZFRvdXIuZ2V0QnlJZChzdGVwSWQpIGFzIGFueSlcbiAgICAgICAgLm9wdGlvbnM7XG4gICAgICBzdGVwT3B0aW9ucy5idXR0b25zPy5mb3JFYWNoKChidXR0b246IFRvdXJTdGVwQnV0dG9uKSA9PiB7XG4gICAgICAgIGlmIChidXR0b24udGV4dCA9PT0gJ2NoZXZyb25fcmlnaHQnKSB7XG4gICAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCk/LnVwZGF0ZVN0ZXBPcHRpb25zKHN0ZXBPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9sb2FkVG91cih0b3VyVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuX2h0dHBDbGllbnQuZ2V0KHRvdXJVcmwpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxdWVzdFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdFNldDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHRTZXQpKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFRvdXIoa2V5OiBzdHJpbmcpOiBJR3VpZGVkVG91ciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdXJzTWFwLmdldChrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlUm91dGVzRm9yU3RlcHMoXG4gICAgcm91dGVkU3RlcHM6IElHdWlkZWRUb3VyU3RlcFtdLFxuICApOiBJR3VpZGVkVG91clN0ZXBbXSB7XG4gICAgcm91dGVkU3RlcHMuZm9yRWFjaCgoc3RlcDogSUd1aWRlZFRvdXJTdGVwKSA9PiB7XG4gICAgICBpZiAoc3RlcC5yb3V0aW5nKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBzdGVwLnJvdXRpbmcucm91dGU7XG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgYmVmb3JlU2hvd1Byb21pc2UsIHRoZW4gd2Ugc2F2ZSBpdCBhbmQgY2FsbCBpdCBhZnRlciB0aGUgbmF2aWdhdGlvblxuICAgICAgICBpZiAoc3RlcC5iZWZvcmVTaG93UHJvbWlzZSkge1xuICAgICAgICAgIGNvbnN0IGJlZm9yZVNob3dQcm9taXNlOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gc3RlcC5iZWZvcmVTaG93UHJvbWlzZTtcbiAgICAgICAgICBzdGVwLmJlZm9yZVNob3dQcm9taXNlID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlclxuICAgICAgICAgICAgICAubmF2aWdhdGUoW3JvdXRlXSwgc3RlcC5yb3V0aW5nPy5leHRyYXMpXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmVmb3JlU2hvd1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGVwLmJlZm9yZVNob3dQcm9taXNlID0gKCkgPT4gdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm91dGVkU3RlcHM7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\nimport * as i0 from \"@angular/core\";\nexport class CovalentGuidedTourModule {\n static ɵfac = function CovalentGuidedTourModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentGuidedTourModule)(); };\n static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CovalentGuidedTourModule });\n static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [CovalentGuidedTourService], imports: [CommonModule] });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CovalentGuidedTourModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && i0.ɵɵsetNgModuleScope(CovalentGuidedTourModule, { imports: [CommonModule] }); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVFsRSxNQUFNLE9BQU8sd0JBQXdCO2tIQUF4Qix3QkFBd0I7NERBQXhCLHdCQUF3QjtpRUFKeEIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUQ1QixZQUFZOztpRkFLWCx3QkFBd0I7Y0FOcEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3RDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixPQUFPLEVBQUUsRUFBRTthQUNaOzt3RkFDWSx3QkFBd0IsY0FMekIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ292YWxlbnRHdWlkZWRUb3VyU2VydmljZSB9IGZyb20gJy4vZ3VpZGVkLXRvdXIuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtDb3ZhbGVudEd1aWRlZFRvdXJTZXJ2aWNlXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91ck1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292YWxlbnQtZ3VpZGVkLXRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2NvdmFsZW50LWd1aWRlZC10b3VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0="],"names":[],"mappings":"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"}
|